/
Mihaham
/
Table-Time
Обзор
Документация
Войти
/
Mihaham
/
Table-Time
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
services/api/tests/test_admin_stats.py
74 строки
2 KB
MihahamYT
feat: dedicated web panels for all 46 games
14 июн 2026, 21:36
14 июн 2026, 21:36
4e11c3f
Код
Авторство
О чём код?
"""Admin stats and catalog API tests.""" import os from unittest.mock import AsyncMock, patch import pytest os.environ["ADMIN_TELEGRAM_ID"] = "999888777" os.environ["ADMIN_USERNAME"] = "Mihaham" from app.config import get_settings from tests.test_admin_auth import FakeRedis from tests.test_game import _setup_two_player_session @pytest.fixture def admin_token(client): get_settings.cache_clear() fake_redis = FakeRedis() with patch("app.modules.admin.auth.get_redis", new_callable=AsyncMock) as mock_redis: mock_redis.return_value = fake_redis req = client.post("/api/v1/auth/admin/otp/request", json={"telegram_id": 999888777}) code = req.json()["code"] verify = client.post( "/api/v1/auth/admin/otp/verify", json={"username": "Mihaham", "code": code}, ) yield verify.json()["access_token"] get_settings.cache_clear() def _admin_headers(token: str) -> dict: return {"Authorization": f"Bearer {token}"} def test_admin_stats_overview(client, admin_token): _setup_two_player_session(client) r = client.get("/api/v1/admin/stats/overview?period=7d", headers=_admin_headers(admin_token)) assert r.status_code == 200 data = r.json() assert "games_started" in data assert "active_sessions" in data assert "top_plugins" in data def test_admin_stats_timeseries(client, admin_token): r = client.get( "/api/v1/admin/stats/timeseries?metric=games_started&period=7d", headers=_admin_headers(admin_token), ) assert r.status_code == 200 assert "points" in r.json() def test_admin_catalog_labels(client, admin_token): r = client.get("/api/v1/admin/catalog/labels", headers=_admin_headers(admin_token)) assert r.status_code == 200 plugins = r.json()["plugins"] assert "memo" in plugins assert plugins["memo"]["display_name"] def test_admin_health(client, admin_token): r = client.get("/api/v1/admin/health", headers=_admin_headers(admin_token)) assert r.status_code == 200 assert r.json()["api"] == "ok" def test_admin_session_detail(client, admin_token): session_id, _, _, _ = _setup_two_player_session(client) r = client.get(f"/api/v1/admin/sessions/{session_id}", headers=_admin_headers(admin_token)) assert r.status_code == 200 assert r.json()["session"]["id"] == session_id assert len(r.json()["participants"]) >= 1