| import json |
| import tempfile |
| import unittest |
| from pathlib import Path |
|
|
|
|
| ROOT_DIR = Path(__file__).resolve().parents[1] |
| ROOT_CONFIG_FILE = ROOT_DIR / "config.json" |
|
|
|
|
| class ConfigLoadingTests(unittest.TestCase): |
| @classmethod |
| def setUpClass(cls) -> None: |
| cls._created_root_config = False |
| if not ROOT_CONFIG_FILE.exists(): |
| ROOT_CONFIG_FILE.write_text(json.dumps({"auth-key": "test-auth"}), encoding="utf-8") |
| cls._created_root_config = True |
|
|
| from services import config as config_module |
|
|
| cls.config_module = config_module |
|
|
| @classmethod |
| def tearDownClass(cls) -> None: |
| if cls._created_root_config and ROOT_CONFIG_FILE.exists(): |
| ROOT_CONFIG_FILE.unlink() |
|
|
| def test_load_settings_ignores_directory_config_path(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp_dir: |
| base_dir = Path(tmp_dir) |
| data_dir = base_dir / "data" |
| config_dir = base_dir / "config.json" |
| os_auth_key = "env-auth" |
|
|
| config_dir.mkdir() |
|
|
| module = self.config_module |
| old_base_dir = module.BASE_DIR |
| old_data_dir = module.DATA_DIR |
| old_config_file = module.CONFIG_FILE |
| old_env_auth_key = module.os.environ.get("CHATGPT2API_AUTH_KEY") |
| try: |
| module.BASE_DIR = base_dir |
| module.DATA_DIR = data_dir |
| module.CONFIG_FILE = config_dir |
| module.os.environ["CHATGPT2API_AUTH_KEY"] = os_auth_key |
|
|
| settings = module._load_settings() |
|
|
| self.assertEqual(settings.auth_key, os_auth_key) |
| self.assertEqual(settings.refresh_account_interval_minute, 5) |
| finally: |
| module.BASE_DIR = old_base_dir |
| module.DATA_DIR = old_data_dir |
| module.CONFIG_FILE = old_config_file |
| if old_env_auth_key is None: |
| module.os.environ.pop("CHATGPT2API_AUTH_KEY", None) |
| else: |
| module.os.environ["CHATGPT2API_AUTH_KEY"] = old_env_auth_key |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|