polyglot-tutor / tests /test_config.py
blizzarman's picture
feat: M0 walking skeleton (app, service protocols, CI/CD, Space deploy)
00d5ae5
Raw
History Blame Contribute Delete
1.05 kB
from pydantic import SecretStr
from tutor.config import Settings
def _settings(**overrides: object) -> Settings:
# _env_file=None: ignore any local .env so tests are hermetic.
return Settings(_env_file=None, **overrides) # type: ignore[arg-type]
def test_defaults_are_offline_safe() -> None:
settings = _settings()
assert settings.llm_provider == "fake"
assert settings.storage_backend == "memory"
assert settings.port == 7860
def test_env_overrides(monkeypatch) -> None:
monkeypatch.setenv("LLM_PROVIDER", "gemini")
monkeypatch.setenv("LLM_MODEL", "gemini-2.5-flash")
monkeypatch.setenv("LLM_API_KEY", "sk-test")
settings = _settings()
assert settings.llm_provider == "gemini"
assert settings.llm_model == "gemini-2.5-flash"
assert isinstance(settings.llm_api_key, SecretStr)
def test_api_key_is_not_leaked_in_repr() -> None:
settings = _settings(llm_api_key=SecretStr("sk-very-secret"))
assert "sk-very-secret" not in repr(settings)
assert "sk-very-secret" not in str(settings)