Desi-Clans/backend/tests/test_admin_api.py
2026-10-08 02:52:58 +05:30

50 lines
1.8 KiB
Python

import uuid
from tests.helpers import auth_headers, client, register_user
def _admin_token() -> str:
from app.core.config import get_settings
settings = get_settings()
response = client.post(
"/api/admin/auth/login",
json={"email": settings.admin_email, "password": settings.admin_password},
)
if response.status_code != 200:
raise RuntimeError(f"Admin login failed: {response.text} — run scripts/seed_admin.py")
return response.json()["access_token"]
def test_attendee_cannot_access_admin_dashboard() -> None:
_, token = register_user()
response = client.get("/api/admin/dashboard/metrics", headers=auth_headers(token))
assert response.status_code == 401
def test_admin_dashboard_metrics() -> None:
token = _admin_token()
response = client.get("/api/admin/dashboard/metrics", headers={"Authorization": f"Bearer {token}"})
assert response.status_code == 200
body = response.json()
assert "total_revenue_paise" in body
assert "tickets_sold" in body
assert "upcoming_events" in body
def test_admin_lists_catalog() -> None:
token = _admin_token()
headers = {"Authorization": f"Bearer {token}"}
assert client.get("/api/admin/events", headers=headers).status_code == 200
assert client.get("/api/admin/venues", headers=headers).status_code == 200
assert client.get("/api/admin/orders", headers=headers).status_code == 200
assert client.get("/api/admin/payments", headers=headers).status_code == 200
assert client.get("/api/admin/stats/events", headers=headers).status_code == 200
def test_admin_invalid_login() -> None:
response = client.post(
"/api/admin/auth/login",
json={"email": f"nope-{uuid.uuid4().hex}@example.com", "password": "wrongpass"},
)
assert response.status_code == 401