Files
home-automation/tests/test_config.py
T

56 lines
2.8 KiB
Python
Raw Normal View History

from app.config import Settings
def test_settings_support_two_independent_database_urls(monkeypatch) -> None:
2026-04-20 15:16:47 +02:00
monkeypatch.setenv("APP_DATABASE_URL", "sqlite:///./data/app.db")
monkeypatch.setenv("LOCATION_DATABASE_URL", "sqlite:///./data/locationRecorder.db")
monkeypatch.setenv("POO_DATABASE_URL", "sqlite:///./data/pooRecorder.db")
2026-04-20 17:36:05 +02:00
monkeypatch.setenv("APP_HOSTNAME", "home.example.com")
monkeypatch.setenv("POO_WEBHOOK_ID", "poo-hook")
monkeypatch.setenv("POO_SENSOR_ENTITY_NAME", "sensor.test_poo_status")
monkeypatch.setenv("POO_SENSOR_FRIENDLY_NAME", "Poo Status")
2026-04-20 10:11:02 +02:00
monkeypatch.setenv("HOME_ASSISTANT_BASE_URL", "http://ha.local:8123")
monkeypatch.setenv("HOME_ASSISTANT_AUTH_TOKEN", "token")
monkeypatch.setenv("HOME_ASSISTANT_TIMEOUT_SECONDS", "2.5")
2026-04-20 15:16:47 +02:00
monkeypatch.setenv("AUTH_BOOTSTRAP_USERNAME", "admin")
monkeypatch.setenv("AUTH_BOOTSTRAP_PASSWORD", "secret")
monkeypatch.setenv("AUTH_SESSION_COOKIE_NAME", "auth_cookie")
monkeypatch.setenv("AUTH_SESSION_TTL_HOURS", "8")
monkeypatch.setenv("APP_ENV", "production")
2026-04-20 15:16:47 +02:00
settings = Settings(_env_file=None)
2026-04-20 15:16:47 +02:00
assert settings.app_database_url == "sqlite:///./data/app.db"
assert settings.location_database_url == "sqlite:///./data/locationRecorder.db"
assert settings.poo_database_url == "sqlite:///./data/pooRecorder.db"
assert settings.poo_webhook_id == "poo-hook"
assert settings.poo_sensor_entity_name == "sensor.test_poo_status"
assert settings.poo_sensor_friendly_name == "Poo Status"
2026-04-20 10:11:02 +02:00
assert settings.home_assistant_base_url == "http://ha.local:8123"
assert settings.home_assistant_auth_token == "token"
assert settings.home_assistant_timeout_seconds == 2.5
2026-04-20 17:36:05 +02:00
assert settings.app_hostname == "home.example.com"
assert settings.app_base_url == "https://home.example.com"
assert settings.ticktick_redirect_uri == "https://home.example.com/ticktick/auth/code"
2026-04-20 15:16:47 +02:00
assert settings.auth_bootstrap_username == "admin"
assert settings.auth_bootstrap_password == "secret"
assert settings.auth_session_cookie_name == "auth_cookie"
assert settings.auth_session_ttl_hours == 8
assert settings.location_sqlite_path is not None
assert settings.location_sqlite_path.name == "locationRecorder.db"
2026-04-20 15:16:47 +02:00
assert settings.app_sqlite_path is not None
assert settings.app_sqlite_path.name == "app.db"
assert settings.poo_sqlite_path is not None
assert settings.poo_sqlite_path.name == "pooRecorder.db"
2026-04-20 15:16:47 +02:00
assert settings.auth_cookie_secure is True
2026-04-20 17:36:05 +02:00
def test_settings_derive_development_ticktick_redirect_uri(monkeypatch) -> None:
monkeypatch.setenv("APP_ENV", "development")
monkeypatch.setenv("APP_HOSTNAME", "localhost:11001")
settings = Settings(_env_file=None)
assert settings.app_base_url == "http://localhost:11001"
assert settings.ticktick_redirect_uri == "http://localhost:11001/ticktick/auth/code"