AI-Sprint-bot / tests /unit /test_settings.py
FreshPixels's picture
Create tests/unit/test_settings.py
6fd04ab verified
Raw
History Blame Contribute Delete
2.56 kB
from __future__ import annotations
import os
import pytest
from core.config.settings import Settings, get_settings
class TestGetSettings:
def test_returns_settings_instance(self, env_full) -> None:
result = get_settings()
assert isinstance(result, Settings)
def test_caches_result(self, env_full) -> None:
a = get_settings()
b = get_settings()
assert a is b
def test_cache_clear_allows_new_instance(self, env_full) -> None:
a = get_settings()
get_settings.cache_clear()
b = get_settings()
assert a is not b
class TestSettings:
def test_defaults(self) -> None:
s = Settings(
BOT_TOKEN="123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo",
OPENAI_API_KEY="sk-test",
ADMIN_ID="1",
)
assert s.PORT == 7860
assert s.LOG_LEVEL == "INFO"
assert s.LOG_FORMAT == "json"
assert s.DEFAULT_PROVIDER == "openai"
def test_required_fields(self) -> None:
s = Settings(
BOT_TOKEN="123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo",
OPENAI_API_KEY="sk-test",
ADMIN_ID="1",
)
rf = s.required_fields
assert "BOT_TOKEN" in rf
assert "OPENAI_API_KEY" in rf
assert "ADMIN_ID" in rf
def test_port_validation_low(self) -> None:
with pytest.raises(Exception):
Settings(
BOT_TOKEN="t",
OPENAI_API_KEY="k",
ADMIN_ID="1",
PORT=0,
)
def test_port_validation_high(self) -> None:
with pytest.raises(Exception):
Settings(
BOT_TOKEN="t",
OPENAI_API_KEY="k",
ADMIN_ID="1",
PORT=70000,
)
def test_reads_from_env(self, env_full) -> None:
s = get_settings()
assert s.BOT_TOKEN == "123456789:AAHdqTcvCH1vGWJxfSeofSAsQK6PALsAWo"
assert s.ADMIN_ID == "123456789"
def test_default_provider_literal(self) -> None:
s = Settings(
BOT_TOKEN="t",
OPENAI_API_KEY="k",
ADMIN_ID="1",
DEFAULT_PROVIDER="claude",
)
assert s.DEFAULT_PROVIDER == "claude"
def test_invalid_default_provider(self) -> None:
with pytest.raises(Exception):
Settings(
BOT_TOKEN="t",
OPENAI_API_KEY="k",
ADMIN_ID="1",
DEFAULT_PROVIDER="invalid_provider",
)