v0.13.3 account delete api and web client update for it
test / test (push) Canceled after 0s

This commit is contained in:
lixen committed 2026-10-12 20:52:53 -04:00
1 parent cc03dc0294
commit 64617014c4
16 files changed
+672 -57

No files matched your search

+43
View File
@@ -5,6 +5,8 @@ import (
"testing"
"time"
"github.com/lixenwraith/chess/internal/server/chess"
"github.com/lixenwraith/chess/internal/server/core"
"github.com/lixenwraith/chess/internal/server/storage"
"github.com/google/uuid"
@@ -146,3 +148,44 @@ func TestNewRejectsShortJWTSecret(t *testing.T) {
t.Fatal("31-byte JWT secret accepted")
}
}
func TestDeleteAccountReleasesLiveClaims(t *testing.T) {
svc := newPersistentTestService(t)
user, sessionID, err := svc.RegisterUser("alice", "", "Password1")
if err != nil {
t.Fatal(err)
}
token, err := svc.GenerateUserToken(user.UserID, sessionID)
if err != nil {
t.Fatal(err)
}
gameID := uuid.NewString()
white := core.NewPlayer(core.PlayerConfig{Type: core.PlayerHuman}, core.ColorWhite)
white.ID, white.ClaimedBy = user.UserID, user.UserID
black := core.NewPlayer(core.PlayerConfig{Type: core.PlayerComputer, Level: 1, SearchTime: 100}, core.ColorBlack)
if err := svc.CreateGame(gameID, white, black, chess.StartFEN, core.ColorWhite, core.StateOngoing, core.TermNone); err != nil {
t.Fatal(err)
}
if err := svc.DeleteAccount(user.UserID, sessionID, "Password2"); !errors.Is(err, ErrInvalidCredentials) {
t.Fatalf("wrong password: %v, want ErrInvalidCredentials", err)
}
if _, _, err := svc.ValidateToken(token); err != nil {
t.Fatalf("a refused deletion ended the session: %v", err)
}
if err := svc.DeleteAccount(user.UserID, sessionID, "Password1"); err != nil {
t.Fatal(err)
}
if _, _, err := svc.ValidateToken(token); err == nil {
t.Error("token still valid after deletion")
}
view, err := svc.GetGameView(gameID)
if err != nil {
t.Fatal(err)
}
if owner := view.WhitePlayer.ClaimedBy; owner != "" {
t.Errorf("live game still claimed by the deleted account: %q", owner)
}
}