system-prompts-and-models-o.../dealix/tests/e2e/test_e2e.py
2026-05-01 14:03:52 +03:00

51 lines
1.2 KiB
Python

"""
E2E smoke tests against a running instance.
Run: API_BASE=http://127.0.0.1:8001 pytest tests/e2e/test_e2e.py --no-cov
"""
from __future__ import annotations
import os
import httpx
import pytest
BASE = os.getenv("API_BASE", "http://127.0.0.1:8001")
HEADERS = {"X-API-Key": os.getenv("API_KEY", "")} if os.getenv("API_KEY") else {}
def _skip_if_no_server() -> None:
try:
httpx.get(f"{BASE}/health", timeout=2)
except Exception:
pytest.skip(f"No server at {BASE}")
def test_health():
_skip_if_no_server()
r = httpx.get(f"{BASE}/health", timeout=5)
assert r.status_code == 200
assert r.json().get("status") == "ok"
def test_health_deep():
_skip_if_no_server()
r = httpx.get(f"{BASE}/health/deep", timeout=10)
assert r.status_code == 200
data = r.json()
assert "checks" in data
assert data["status"] in {"ok", "degraded"}
def test_docs_available():
_skip_if_no_server()
r = httpx.get(f"{BASE}/docs", timeout=5)
assert r.status_code == 200
def test_rate_limit_header_present():
_skip_if_no_server()
r = httpx.get(f"{BASE}/health", timeout=5)
# slowapi sets this on limited routes only; /health is unlimited
assert r.status_code == 200