# retoor import requests from tests.api.admin.gateway.index import JSON_gateway, admin_session, member_key from tests.conftest import BASE_URL def test_stats_tab_renders_for_admin(seeded_db): admin = admin_session(seeded_db) response = admin.get( f"{BASE_URL}/admin/gateway?tab=stats", headers={"Accept": "text/html"} ) assert response.status_code == 200 assert "Model pool" in response.text assert "Model routes" not in response.text def test_stats_data_requires_admin(seeded_db): assert ( requests.get( f"{BASE_URL}/admin/gateway/stats/data", headers=JSON_gateway, allow_redirects=False ).status_code == 401 ) key = member_key() assert ( requests.get( f"{BASE_URL}/admin/gateway/stats/data", headers={**JSON_gateway, "X-API-KEY": key}, allow_redirects=False, ).status_code == 403 ) def test_stats_data_shape_for_admin(seeded_db): admin = admin_session(seeded_db) response = admin.get(f"{BASE_URL}/admin/gateway/stats/data?range=24h", headers=JSON_gateway) assert response.status_code == 200 data = response.json() for key in ( "totals", "per_model", "per_endpoint", "per_provider", "timeseries", "status_codes", "streaming_split", "failure_reasons", "hourly_distribution", "recent_failures", "latency_histogram", "tokens_per_second_histogram", "bucket_seconds", ): assert key in data def test_stats_data_rejects_unknown_range(seeded_db): admin = admin_session(seeded_db) response = admin.get(f"{BASE_URL}/admin/gateway/stats/data?range=nonsense", headers=JSON_gateway) assert response.status_code == 400 def test_stats_models_returns_a_list(seeded_db): admin = admin_session(seeded_db) response = admin.get(f"{BASE_URL}/admin/gateway/stats/models", headers=JSON_gateway) assert response.status_code == 200 assert isinstance(response.json()["models"], list) def test_stats_model_detail_for_an_unknown_model(seeded_db): admin = admin_session(seeded_db) response = admin.get( f"{BASE_URL}/admin/gateway/stats/model/default/never-called-model?range=24h", headers=JSON_gateway, ) assert response.status_code == 200 data = response.json() assert data["summary"]["total_requests"] == 0 assert data["health"] is None