"""Test for configuration setup (T04).""" import os import sys import pytest # Add src to path for importing sys.path.insert(0, '/home/google/Sources/LucaSacchiNet/openrouter-watcher/src') @pytest.mark.unit class TestConfigurationSetup: """Test configuration files and settings.""" def test_config_py_exists(self): """Verify config.py file exists.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" assert os.path.isfile(config_path), f"File {config_path} does not exist" def test_env_example_exists(self): """Verify .env.example file exists.""" env_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/.env.example" assert os.path.isfile(env_path), f"File {env_path} does not exist" def test_config_py_has_settings_class(self): """Verify config.py contains Settings class.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" with open(config_path, 'r') as f: content = f.read() assert 'class Settings' in content, "config.py should contain Settings class" def test_config_py_has_database_url(self): """Verify Settings has database_url field.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" with open(config_path, 'r') as f: content = f.read() assert 'database_url' in content.lower(), "Settings should have database_url field" def test_config_py_has_secret_key(self): """Verify Settings has secret_key field.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" with open(config_path, 'r') as f: content = f.read() assert 'secret_key' in content.lower(), "Settings should have secret_key field" def test_config_py_has_encryption_key(self): """Verify Settings has encryption_key field.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" with open(config_path, 'r') as f: content = f.read() assert 'encryption_key' in content.lower(), "Settings should have encryption_key field" def test_config_py_uses_pydantic_settings(self): """Verify config.py uses pydantic_settings.""" config_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/src/openrouter_monitor/config.py" with open(config_path, 'r') as f: content = f.read() assert 'BaseSettings' in content or 'pydantic_settings' in content, \ "config.py should use pydantic_settings BaseSettings" def test_env_example_has_database_url(self): """Verify .env.example contains DATABASE_URL.""" env_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/.env.example" with open(env_path, 'r') as f: content = f.read() assert 'DATABASE_URL' in content, ".env.example should contain DATABASE_URL" def test_env_example_has_secret_key(self): """Verify .env.example contains SECRET_KEY.""" env_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/.env.example" with open(env_path, 'r') as f: content = f.read() assert 'SECRET_KEY' in content, ".env.example should contain SECRET_KEY" def test_env_example_has_encryption_key(self): """Verify .env.example contains ENCRYPTION_KEY.""" env_path = "/home/google/Sources/LucaSacchiNet/openrouter-watcher/.env.example" with open(env_path, 'r') as f: content = f.read() assert 'ENCRYPTION_KEY' in content, ".env.example should contain ENCRYPTION_KEY" def test_config_can_be_imported(self): """Verify config module can be imported successfully.""" try: from openrouter_monitor.config import Settings, get_settings assert True except Exception as e: pytest.fail(f"Failed to import config module: {e}") def test_settings_class_instantiates(self): """Verify Settings class can be instantiated with test values.""" try: from openrouter_monitor.config import Settings # Test with required fields (use snake_case field names) settings = Settings( secret_key="test-secret-key-min-32-chars-long", encryption_key="test-32-byte-encryption-key!!" ) assert settings is not None assert hasattr(settings, 'database_url') except Exception as e: pytest.fail(f"Failed to instantiate Settings: {e}") def test_settings_has_defaults(self): """Verify Settings has sensible defaults.""" try: from openrouter_monitor.config import Settings settings = Settings( secret_key="test-secret-key-min-32-chars-long", encryption_key="test-32-byte-encryption-key!!" ) # Check default values assert settings.database_url is not None assert settings.debug is not None assert settings.log_level is not None except Exception as e: pytest.fail(f"Settings missing defaults: {e}")