Files
Axon/tests/test_main.py
T
arsam 543508954b Import tests: tests/test_main
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:06:47 +03:30

74 lines
2.1 KiB
Python

from fastapi.testclient import TestClient
def test_app_health_reports_status(monkeypatch):
from axon.services.cache import InMemoryCache
cache = InMemoryCache()
async def async_cache():
return cache
monkeypatch.setattr("axon.main.get_cache", async_cache)
monkeypatch.setattr("axon.main.load_reranker", lambda: None)
monkeypatch.setattr("axon.main.get_reranker", lambda: object())
monkeypatch.setattr("axon.middleware.auth.settings.api_keys", None)
from axon.main import app
with TestClient(app) as client:
resp = client.get("/health")
assert resp.status_code == 200
assert resp.json() == {
"status": "ok",
"redis": "in-memory fallback",
"reranker": "loaded",
}
def test_app_includes_core_routes(monkeypatch):
monkeypatch.setattr("axon.main.load_reranker", lambda: None)
monkeypatch.setattr("axon.middleware.auth.settings.api_keys", None)
from axon.main import app
paths = set(app.openapi()["paths"])
assert "/search" in paths
assert "/extract" in paths
assert "/crawl" in paths
assert "/map" in paths
assert "/ingest" in paths
assert "/index/search" in paths
assert "/research/jobs" in paths
assert "/tavily/search" in paths
assert "/validate/citations" in paths
assert "/research" in paths
assert "/health" in paths
assert "/metrics" in paths
def test_app_auth_middleware_protects_routes(monkeypatch):
monkeypatch.setattr("axon.main.load_reranker", lambda: None)
monkeypatch.setattr("axon.middleware.auth.settings.api_keys", "secret")
from axon.main import app
with TestClient(app) as client:
resp = client.post("/search", json={"query": "test"})
assert resp.status_code == 401
def test_metrics_endpoint_exempt_from_auth(monkeypatch):
monkeypatch.setattr("axon.main.load_reranker", lambda: None)
monkeypatch.setattr("axon.middleware.auth.settings.api_keys", "secret")
from axon.main import app
with TestClient(app) as client:
resp = client.get("/metrics")
assert resp.status_code == 200
assert "requests_total" in resp.json()