| 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() |
|
|