Livrare LOT 1 - Didi
This commit is contained in:
commit
5380c3fc63
990 changed files with 133308 additions and 0 deletions
100
ai_platform/modules/web/tests/test_config.py
Normal file
100
ai_platform/modules/web/tests/test_config.py
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
"""Tests for configuration module."""
|
||||
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from web.config import SettingsCache, WebSettings
|
||||
|
||||
# Shared test defaults for required fields
|
||||
_TEST_DEFAULTS = {
|
||||
"searxng_base_url": "http://localhost:55100",
|
||||
"llm_base_url": "http://localhost:14011",
|
||||
"external_url": "http://localhost:51100",
|
||||
}
|
||||
|
||||
|
||||
class TestWebSettings:
|
||||
"""Tests for WebSettings."""
|
||||
|
||||
def test_required_searxng_base_url(self) -> None:
|
||||
"""Test that searxng_base_url is required."""
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
WebSettings(
|
||||
llm_base_url="http://localhost:14011",
|
||||
external_url="http://localhost:51100",
|
||||
)
|
||||
|
||||
errors = exc_info.value.errors()
|
||||
assert any(e["loc"] == ("searxng_base_url",) for e in errors)
|
||||
|
||||
def test_required_llm_base_url(self) -> None:
|
||||
"""Test that llm_base_url is required (no default)."""
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
WebSettings(
|
||||
searxng_base_url="http://localhost:55100",
|
||||
external_url="http://localhost:51100",
|
||||
)
|
||||
|
||||
errors = exc_info.value.errors()
|
||||
assert any(e["loc"] == ("llm_base_url",) for e in errors)
|
||||
|
||||
def test_required_external_url(self) -> None:
|
||||
"""Test that external_url is required."""
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
WebSettings(
|
||||
searxng_base_url="http://localhost:55100",
|
||||
llm_base_url="http://localhost:14011",
|
||||
)
|
||||
|
||||
errors = exc_info.value.errors()
|
||||
assert any(e["loc"] == ("external_url",) for e in errors)
|
||||
|
||||
def test_valid_settings(self) -> None:
|
||||
"""Test valid settings creation."""
|
||||
settings = WebSettings(**_TEST_DEFAULTS)
|
||||
|
||||
assert settings.searxng_base_url == "http://localhost:55100"
|
||||
assert settings.port == 51100
|
||||
assert settings.host == "0.0.0.0"
|
||||
assert settings.search_default_max_results == 10
|
||||
assert settings.connect_timeout == 5.0
|
||||
|
||||
def test_api_tokens_parsing(self) -> None:
|
||||
"""Test comma-separated API tokens parsing."""
|
||||
settings = WebSettings(
|
||||
**_TEST_DEFAULTS,
|
||||
api_tokens="token1,token2,token3",
|
||||
)
|
||||
|
||||
assert settings.api_tokens == frozenset(["token1", "token2", "token3"])
|
||||
assert settings.auth_enabled is True
|
||||
|
||||
def test_auth_disabled_by_default(self) -> None:
|
||||
"""Test that auth is disabled when no tokens set."""
|
||||
settings = WebSettings(**_TEST_DEFAULTS)
|
||||
|
||||
assert settings.api_tokens is None
|
||||
assert settings.auth_enabled is False
|
||||
|
||||
|
||||
class TestSettingsCache:
|
||||
"""Tests for SettingsCache."""
|
||||
|
||||
def test_cache_returns_same_instance(self) -> None:
|
||||
"""Test that get() returns the same instance."""
|
||||
SettingsCache.set(WebSettings(**_TEST_DEFAULTS))
|
||||
|
||||
settings1 = SettingsCache.get()
|
||||
settings2 = SettingsCache.get()
|
||||
|
||||
assert settings1 is settings2
|
||||
|
||||
def test_cache_clear(self) -> None:
|
||||
"""Test that clear() resets the cache."""
|
||||
SettingsCache.set(WebSettings(**_TEST_DEFAULTS))
|
||||
|
||||
SettingsCache.clear()
|
||||
|
||||
# This should raise because no .env and no required config vars
|
||||
with pytest.raises(ValidationError):
|
||||
SettingsCache.get()
|
||||
Loading…
Add table
Add a link
Reference in a new issue