Files
TSSBOT/tests/test_tss_api_leaderboard.py
NotSoToothless 24335a2677 Auto merge dev → main (#1353)
* feat(gateway): hashed key store with grant + hot reload

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): channel registry + aiohttp app (keyed auth, whoami, per-channel ws/proxy)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): manage_keys CLI (add/list/revoke)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): retire srebot_external, run relay-gateway under PM2

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): point ecosystem + README at relay-gateway

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss): replay outbox producer for relay gateway

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss): forward processed games to relay outbox

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): db helpers, app skeleton, info endpoint, fixtures

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): player, games, history, search endpoints

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): live, match, scoreboard, matches-search, maps

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): filter-required leaderboards (players/vehicles/stats)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): tournament list/detail/standings/matches

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat: wire tss upstream through gateway + tssbot-api PM2 app

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 03:38:20 -07:00

25 lines
936 B
Python

def test_leaderboard_requires_filter(client):
r = client.get("/api/tss/leaderboard/players")
assert r.status_code == 400
assert r.json()["code"] == "FILTER_REQUIRED"
def test_leaderboard_players_with_window(client):
r = client.get("/api/tss/leaderboard/players?start_date=1780000000&end_date=1790000000")
assert r.status_code == 200
rows = r.json()["players"]
assert rows[0]["uid"] == "148919027" # highest score
def test_leaderboard_vehicles_with_tournament(client):
r = client.get("/api/tss/leaderboard/vehicles?tournament_id=24839")
assert r.status_code == 200
assert r.json()["vehicles"][0]["vehicle_internal"] == "i-153_m62"
def test_leaderboard_stats(client):
r = client.get("/api/tss/leaderboard/stats?start_date=1780000000&end_date=1790000000")
body = r.json()
assert body["totals"]["battles"] == 2
assert body["top_vehicles"][0]["vehicle_internal"] == "i-153_m62"