feat(multiplayer): harden ranked arena admission

This commit is contained in:
Josh Creek
2026-09-01 19:39:11 +01:00
parent 52e3d73678
commit 5630c5c8dc
6 changed files with 46 additions and 14 deletions
+11 -4
View File
@@ -11,7 +11,7 @@ func rankedParticipants() []RankedParticipant {
}
func TestRankedAdmissionRequiresSixUniqueVerifiedSoloHumansAndEligibleArena(t *testing.T) {
if err := ValidateRankedAdmission(rankedParticipants(), RankedArena{RandomEnabled: true}); err != nil {
if err := ValidateRankedAdmission(rankedParticipants(), DefaultRankedArena()); err != nil {
t.Fatal(err)
}
cases := []struct {
@@ -23,13 +23,12 @@ func TestRankedAdmissionRequiresSixUniqueVerifiedSoloHumansAndEligibleArena(t *t
{"bot", func(p []RankedParticipant, _ *RankedArena) { p[0].IsBot = true }},
{"backfill", func(p []RankedParticipant, _ *RankedArena) { p[0].IsBackfill = true }},
{"duplicate identity", func(p []RankedParticipant, _ *RankedArena) { p[1].SteamID = p[0].SteamID }},
{"random disabled", func(_ []RankedParticipant, a *RankedArena) { a.RandomEnabled = false }},
{"elevated arena", func(_ []RankedParticipant, a *RankedArena) { a.ElevatedGoals = true }},
{"unknown arena", func(_ []RankedParticipant, a *RankedArena) { a.ID = "arena_unknown" }},
}
for _, test := range cases {
t.Run(test.name, func(t *testing.T) {
participants := rankedParticipants()
arena := RankedArena{RandomEnabled: true}
arena := DefaultRankedArena()
test.edit(participants, &arena)
if err := ValidateRankedAdmission(participants, arena); err == nil {
t.Fatal("invalid ranked admission accepted")
@@ -37,3 +36,11 @@ func TestRankedAdmissionRequiresSixUniqueVerifiedSoloHumansAndEligibleArena(t *t
})
}
}
func TestRankedArenaRegistryExcludesElevatedVariants(t *testing.T) {
for _, id := range []string{"arena_01_elevated", "arena_02_elevated", "arena_03_elevated"} {
if err := ValidateRankedAdmission(rankedParticipants(), RankedArena{ID: id}); err == nil {
t.Fatalf("elevated arena %q accepted for ranked", id)
}
}
}