mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-07-04 08:02:02 +02:00
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
import os
|
|
import sys
|
|
import tempfile
|
|
import shutil
|
|
import unittest
|
|
import yaml
|
|
|
|
dir_path = os.path.abspath(
|
|
os.path.join(os.path.dirname(__file__), '../../lookup_plugins')
|
|
)
|
|
sys.path.insert(0, dir_path)
|
|
|
|
from application_gid import LookupModule
|
|
|
|
|
|
class TestApplicationGidLookup(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
# Create a temporary roles directory
|
|
self.temp_dir = tempfile.mkdtemp()
|
|
self.roles_dir = os.path.join(self.temp_dir, "roles")
|
|
os.mkdir(self.roles_dir)
|
|
|
|
# Define mock application_ids
|
|
self.applications = {
|
|
"nextcloud": "docker-nextcloud",
|
|
"moodle": "docker-moodle",
|
|
"wordpress": "docker-wordpress",
|
|
"taiga": "docker-taiga"
|
|
}
|
|
|
|
# Create fake role dirs and vars/main.yml
|
|
for app_id, dirname in self.applications.items():
|
|
role_path = os.path.join(self.roles_dir, dirname, "vars")
|
|
os.makedirs(role_path)
|
|
with open(os.path.join(role_path, "main.yml"), "w") as f:
|
|
yaml.dump({"application_id": app_id}, f)
|
|
|
|
self.lookup = LookupModule()
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.temp_dir)
|
|
|
|
def test_gid_lookup(self):
|
|
# The sorted application_ids: [moodle, nextcloud, taiga, wordpress]
|
|
expected_order = ["moodle", "nextcloud", "taiga", "wordpress"]
|
|
for i, app_id in enumerate(expected_order):
|
|
result = self.lookup.run([app_id], roles_dir=self.roles_dir)
|
|
self.assertEqual(result, [10000 + i])
|
|
|
|
def test_custom_base_gid(self):
|
|
result = self.lookup.run(["taiga"], roles_dir=self.roles_dir, base_gid=20000)
|
|
self.assertEqual(result, [20002]) # 2nd index in sorted list
|
|
|
|
def test_application_id_not_found(self):
|
|
with self.assertRaises(Exception) as context:
|
|
self.lookup.run(["unknownapp"], roles_dir=self.roles_dir)
|
|
self.assertIn("Application ID 'unknownapp' not found", str(context.exception))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|