from ntr_fetcher.config import Settings def test_settings_defaults(): settings = Settings(admin_token="test-secret") assert settings.port == 8000 assert settings.host == "127.0.0.1" assert settings.db_path == "./ntr_fetcher.db" assert settings.poll_interval_seconds == 3600 assert settings.soundcloud_user == "nicktherat" assert settings.show_day == 2 assert settings.show_hour == 22 def test_settings_from_env(monkeypatch): monkeypatch.setenv("NTR_PORT", "9090") monkeypatch.setenv("NTR_HOST", "0.0.0.0") monkeypatch.setenv("NTR_ADMIN_TOKEN", "my-secret") monkeypatch.setenv("NTR_SOUNDCLOUD_USER", "someoneelse") settings = Settings() assert settings.port == 9090 assert settings.host == "0.0.0.0" assert settings.admin_token == "my-secret" assert settings.soundcloud_user == "someoneelse" def test_settings_admin_token_required(): import pytest with pytest.raises(Exception): Settings() def test_dashboard_config_absent(monkeypatch): monkeypatch.setenv("NTR_ADMIN_TOKEN", "tok") monkeypatch.delenv("NTR_WEB_USER", raising=False) monkeypatch.delenv("NTR_WEB_PASSWORD", raising=False) monkeypatch.delenv("NTR_SECRET_KEY", raising=False) s = Settings() assert s.web_user is None assert s.web_password is None assert s.secret_key is None assert s.dashboard_enabled is False def test_dashboard_config_present(monkeypatch): monkeypatch.setenv("NTR_ADMIN_TOKEN", "tok") monkeypatch.setenv("NTR_WEB_USER", "nick") monkeypatch.setenv("NTR_WEB_PASSWORD", "secret") monkeypatch.setenv("NTR_SECRET_KEY", "signme") s = Settings() assert s.web_user == "nick" assert s.web_password == "secret" assert s.secret_key == "signme" assert s.dashboard_enabled is True