import importlib import unittest from unittest.mock import patch from app import create_app class ConfigAndStructureTest(unittest.TestCase): def test_create_app_loads_environment_config(self): env = { "CHIS_BASE_URL": "http://chis.example.test/chis", "CHIS_PUBLIC_KEY": "PUBLIC_KEY_PLACEHOLDER", "REDIS_URL": "redis://localhost:6379/0", "LOG_DIR": "logs", "ARCHIVE_DIR": "archives", "CHIS_PROXY": "socks5h://127.0.0.1:1080", } with patch.dict("os.environ", env, clear=False): app = create_app({"TESTING": True}) self.assertEqual(app.config["CHIS_BASE_URL"], env["CHIS_BASE_URL"]) self.assertEqual(app.config["CHIS_PUBLIC_KEY"], env["CHIS_PUBLIC_KEY"]) self.assertEqual(app.config["REDIS_URL"], env["REDIS_URL"]) self.assertEqual(app.config["LOG_DIR"], env["LOG_DIR"]) self.assertEqual(app.config["ARCHIVE_DIR"], env["ARCHIVE_DIR"]) self.assertEqual(app.config["CHIS_PROXY"], env["CHIS_PROXY"]) def test_architecture_packages_are_importable(self): package_names = [ "app.middleware", "app.services", "app.mappers", "app.chis", "app.repositories", "app.validators", ] for package_name in package_names: with self.subTest(package_name=package_name): self.assertIsNotNone(importlib.import_module(package_name)) if __name__ == "__main__": unittest.main()