gwoe-antragspruefer/tests/test_endpoints_smoke.py

80 lines
2.2 KiB
Python
Raw Permalink Normal View History

"""Smoke-Tests für die neuen API-Endpoints.
Diese Tests prüfen nur ob die Endpoints antworten und das richtige
Format zurückgeben keine echten LLM-Calls oder DB-Writes.
"""
import pytest
# Skip wenn die App nicht importierbar ist (missing dependencies lokal)
try:
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
_HAS_APP = True
except ImportError:
_HAS_APP = False
client = None
pytestmark = pytest.mark.skipif(not _HAS_APP, reason="app.main not importable")
class TestQueueStatus:
def test_returns_json(self):
resp = client.get("/api/queue/status")
assert resp.status_code == 200
data = resp.json()
assert "pending" in data
assert "worker_running" in data
def test_pending_starts_at_zero(self):
data = client.get("/api/queue/status").json()
assert data["pending"] == 0
class TestAuthMe:
def test_unauthenticated_returns_false(self):
resp = client.get("/api/auth/me")
assert resp.status_code == 200
data = resp.json()
assert data["authenticated"] is False
class TestAuthLoginUrl:
def test_returns_enabled_flag(self):
resp = client.get("/api/auth/login-url")
assert resp.status_code == 200
data = resp.json()
assert "enabled" in data
class TestBundeslaender:
def test_returns_list(self):
resp = client.get("/api/bundeslaender")
assert resp.status_code == 200
data = resp.json()
assert isinstance(data, list)
assert len(data) > 10 # mindestens 10 BLs
class TestProgramme:
def test_returns_list(self):
resp = client.get("/api/programme")
assert resp.status_code == 200
data = resp.json()
assert isinstance(data, list)
assert len(data) > 50 # mindestens 50 Programme
def test_status_returns_indexed_count(self):
resp = client.get("/api/programme/status")
assert resp.status_code == 200
data = resp.json()
assert "indexed" in data
assert "total" in data
class TestHealth:
def test_health(self):
resp = client.get("/health")
assert resp.status_code == 200