import json import os import sys import tempfile import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] SRC = ROOT / "src" if str(SRC) not in sys.path: sys.path.insert(0, str(SRC)) from agent_app.revenue_assurance.config import RevenueAssuranceConfig, load_config class ConfigLoaderTests(unittest.TestCase): def test_load_config_prefers_environment_over_file(self) -> None: with tempfile.TemporaryDirectory() as tmpdir: config_path = Path(tmpdir) / "config.json" config_path.write_text(json.dumps({ "model_endpoint": "https://from-file.example", "model_deployment": "from-file-model", "api_version": "2024-10-21", "api_key": "file-key", "use_agentic": False, })) os.environ["REVENUE_ASSURANCE_CONFIG_PATH"] = str(config_path) os.environ["REVENUE_ASSURANCE_MODEL_DEPLOYMENT"] = "from-env-model" try: config = load_config() finally: os.environ.pop("REVENUE_ASSURANCE_CONFIG_PATH", None) os.environ.pop("REVENUE_ASSURANCE_MODEL_DEPLOYMENT", None) self.assertEqual(config.model_endpoint, "https://from-file.example") self.assertEqual(config.model_deployment, "from-env-model") self.assertFalse(config.use_agentic) def test_load_config_returns_defaults_when_no_values_exist(self) -> None: config = load_config(config_path=None) self.assertIsInstance(config, RevenueAssuranceConfig) self.assertEqual(config.api_version, "2024-10-21") def test_load_config_disables_agentic_for_placeholder_values(self) -> None: with tempfile.TemporaryDirectory() as tmpdir: config_path = Path(tmpdir) / "config.json" config_path.write_text(json.dumps({ "model_endpoint": "https://your-foundry-resource.services.ai.azure.com", "model_deployment": "gpt-5-6-sol", "api_version": "2024-10-21", "api_key": "YOUR_API_KEY", "use_agentic": True, })) os.environ["REVENUE_ASSURANCE_CONFIG_PATH"] = str(config_path) try: config = load_config() finally: os.environ.pop("REVENUE_ASSURANCE_CONFIG_PATH", None) self.assertFalse(config.use_agentic) self.assertEqual(config.model_endpoint, "https://your-foundry-resource.services.ai.azure.com") if __name__ == "__main__": unittest.main()