mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-12 21:52:02 +00:00
feat: add ban policy to ticket verification
This commit is contained in:
@@ -38,6 +38,25 @@ func TestTicketVerifierBindsAppIdentityExpiryAndSingleUse(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestTicketVerifierRejectsBannedIdentityBeforeConsumption(t *testing.T) {
|
||||
now := time.Unix(1000, 0)
|
||||
verifier, _ := NewTicketVerifier(480)
|
||||
if err := verifier.SetBanned("player-1", true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
ticket := SteamTicket{TicketID: "ticket-1", SteamID: "steam-1", AppID: 480, ExpiresAt: now.Add(time.Minute)}
|
||||
resolve := func(string) (string, bool) { return "player-1", true }
|
||||
if _, err := verifier.Verify(ticket, resolve, now); !errors.Is(err, ErrTicketRejected) {
|
||||
t.Fatalf("banned ticket accepted: %v", err)
|
||||
}
|
||||
if err := verifier.SetBanned("player-1", false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := verifier.Verify(ticket, resolve, now); err != nil {
|
||||
t.Fatalf("unbanned ticket remained consumed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionIsOpaqueShortLivedAndRevocable(t *testing.T) {
|
||||
now := time.Unix(1000, 0)
|
||||
store := NewSessionStore()
|
||||
|
||||
Reference in New Issue
Block a user