diff --git a/tests/integration/test_domains_canonical.py b/tests/integration/test_domains_canonical.py new file mode 100644 index 00000000..cac15278 --- /dev/null +++ b/tests/integration/test_domains_canonical.py @@ -0,0 +1,36 @@ +import unittest +import yaml +import glob +import os + +class TestWebRolesDomains(unittest.TestCase): + def test_canonical_domains_present_and_not_empty(self): + """ + Check all roles/web-*/config/main.yml files: + - must have domains.canonical defined + - domains.canonical must not be empty dict, empty list, or empty string + """ + role_config_paths = glob.glob("roles/web-*/config/main.yml") + self.assertTrue(role_config_paths, "No roles/web-*/config/main.yml files found.") + + for path in role_config_paths: + with self.subTest(role_config=path): + with open(path, "r") as f: + data = yaml.safe_load(f) + + self.assertIsInstance(data, dict, f"YAML root is not a dict in {path}") + + domains = data.get("domains") + self.assertIsNotNone(domains, f"'domains' section missing in {path}") + self.assertIsInstance(domains, dict, f"'domains' must be a dict in {path}") + + canonical = domains.get("canonical") + self.assertIsNotNone(canonical, f"'domains.canonical' missing in {path}") + + # Check for emptiness + empty_values = [{}, [], ""] + self.assertNotIn(canonical, empty_values, + f"'domains.canonical' in {path} must not be empty dict, list, or empty string") + +if __name__ == "__main__": + unittest.main()