/
Mihaham
/
Table-Time
Обзор
Документация
Войти
/
Mihaham
/
Table-Time
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
services/api/tests/test_session.py
160 строк
5 KB
MihahamYT
feat: games catalog, 90%+ test coverage, MkDocs ready for GitVerse
14 июн 2026, 10:45
14 июн 2026, 10:45
03c79f9
Код
Авторство
О чём код?
from tests.conftest import auth_header, guest_auth def test_create_session(client): token, _ = guest_auth(client, "Host") r = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 4}, headers=auth_header(token), ) assert r.status_code == 201 data = r.json() assert len(data["invite_code"]) == 6 assert data["status"] == "lobby" assert len(data["participants"]) == 1 assert data["participants"][0]["is_host"] is True def test_create_session_validation(client): token, _ = guest_auth(client) r = client.post( "/api/v1/sessions", json={"display_name": "X", "max_players": 1}, headers=auth_header(token), ) assert r.status_code == 422 def test_join_session(client): token1, _ = guest_auth(client, "Host") created = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 4}, headers=auth_header(token1), ) code = created.json()["invite_code"] token2, _ = guest_auth(client, "Player2") r = client.post( "/api/v1/sessions/join", json={"invite_code": code, "channel": "web", "display_name": "Player2"}, headers=auth_header(token2), ) assert r.status_code == 200 assert len(r.json()["session"]["participants"]) == 2 def test_join_not_found(client): token, _ = guest_auth(client) r = client.post( "/api/v1/sessions/join", json={"invite_code": "XXXXXX", "channel": "web"}, headers=auth_header(token), ) assert r.status_code == 404 def test_join_full_session(client): token1, _ = guest_auth(client, "Host") created = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 2}, headers=auth_header(token1), ) code = created.json()["invite_code"] token2, _ = guest_auth(client, "P2") client.post( "/api/v1/sessions/join", json={"invite_code": code, "channel": "web", "display_name": "P2"}, headers=auth_header(token2), ) token3, _ = guest_auth(client, "P3") r = client.post( "/api/v1/sessions/join", json={"invite_code": code, "channel": "web", "display_name": "P3"}, headers=auth_header(token3), ) assert r.status_code == 409 def test_get_session(client): token, _ = guest_auth(client) created = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 4}, headers=auth_header(token), ) session_id = created.json()["id"] r = client.get(f"/api/v1/sessions/{session_id}") assert r.status_code == 200 assert r.json()["id"] == session_id def test_get_session_not_found(client): r = client.get("/api/v1/sessions/00000000-0000-0000-0000-000000000099") assert r.status_code == 404 def test_close_session_host_only(client): token1, _ = guest_auth(client, "Host") created = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 4}, headers=auth_header(token1), ) session_id = created.json()["id"] token2, _ = guest_auth(client, "Other") r = client.post( f"/api/v1/sessions/{session_id}/close", headers=auth_header(token2), ) assert r.status_code == 403 r2 = client.post( f"/api/v1/sessions/{session_id}/close", headers=auth_header(token1), ) assert r2.status_code == 200 assert r2.json()["status"] == "closed" def test_join_closed_session(client): token1, _ = guest_auth(client, "Host") created = client.post( "/api/v1/sessions", json={"display_name": "Host", "max_players": 4}, headers=auth_header(token1), ) session_id = created.json()["id"] code = created.json()["invite_code"] client.post(f"/api/v1/sessions/{session_id}/close", headers=auth_header(token1)) token2, _ = guest_auth(client, "Late") r = client.post( "/api/v1/sessions/join", json={"invite_code": code, "channel": "web"}, headers=auth_header(token2), ) assert r.status_code == 410 def test_rejoin_updates_presence(client): token, _ = guest_auth(client, "Returner") created = client.post( "/api/v1/sessions", json={"display_name": "Returner", "max_players": 4}, headers=auth_header(token), ) code = created.json()["invite_code"] r = client.post( "/api/v1/sessions/join", json={"invite_code": code, "channel": "web", "display_name": "Returner"}, headers=auth_header(token), ) assert r.status_code == 200 assert r.json()["participant_id"]