Files
scrap/tests/api/test_auth.py
Gilles Soulier d0b73b9319 codex2
2026-01-14 21:54:55 +01:00

57 lines
1.3 KiB
Python

"""
Tests auth API.
"""
from dataclasses import dataclass
import pytest
from fastapi import HTTPException
from pricewatch.app.api.main import require_token
@dataclass
class FakeRedisConfig:
url: str
@dataclass
class FakeDbConfig:
url: str
@dataclass
class FakeAppConfig:
db: FakeDbConfig
redis: FakeRedisConfig
api_token: str
def test_missing_token_returns_401(monkeypatch):
"""Sans token, retourne 401."""
config = FakeAppConfig(
db=FakeDbConfig(url="sqlite:///:memory:"),
redis=FakeRedisConfig(url="redis://localhost:6379/0"),
api_token="secret",
)
monkeypatch.setattr("pricewatch.app.api.main.get_config", lambda: config)
with pytest.raises(HTTPException) as excinfo:
require_token(None)
assert excinfo.value.status_code == 401
def test_bad_token_returns_403(monkeypatch):
"""Token invalide retourne 403."""
config = FakeAppConfig(
db=FakeDbConfig(url="sqlite:///:memory:"),
redis=FakeRedisConfig(url="redis://localhost:6379/0"),
api_token="secret",
)
monkeypatch.setattr("pricewatch.app.api.main.get_config", lambda: config)
with pytest.raises(HTTPException) as excinfo:
require_token("Bearer nope")
assert excinfo.value.status_code == 403