Compare commits

...

2 Commits

Author SHA1 Message Date
034bd8669e test: cover lock after seeding behavior 2026-02-10 17:37:38 +01:00
dc8a25d3b4 feat: lock seed user after seeding 2026-02-10 17:37:22 +01:00
2 changed files with 31 additions and 0 deletions

View File

@@ -142,6 +142,10 @@ func seedDatabase(userRepo repositories.UserRepository, postRepo repositories.Po
return err
}
if err := lockSeedUser(userRepo, seedUser); err != nil {
return err
}
if err := validateSeedConsistency(voteRepo, allUsers, posts); err != nil {
return fmt.Errorf("seed consistency validation failed: %w", err)
}
@@ -165,6 +169,19 @@ func seedDatabase(userRepo repositories.UserRepository, postRepo repositories.Po
return nil
}
func lockSeedUser(userRepo repositories.UserRepository, seedUser *database.User) error {
if seedUser.Locked {
return nil
}
if err := userRepo.Lock(seedUser.ID); err != nil {
return fmt.Errorf("lock seed user: %w", err)
}
seedUser.Locked = true
return nil
}
const (
seedUsername = "seed_admin"
seedEmail = "seed_admin@goyco.local"

View File

@@ -92,6 +92,10 @@ func TestSeedCommand(t *testing.T) {
t.Error("Expected seed user to be email verified")
}
if !seedUser.Locked {
t.Error("Expected seed user to be locked after seeding")
}
if regularUserCount != 2 {
t.Errorf("Expected 2 regular users, got %d", regularUserCount)
}
@@ -336,15 +340,21 @@ func TestSeedCommandIdempotency(t *testing.T) {
}
seedUserCount := 0
seedUserLocked := false
for _, user := range users {
if user.Username == seedUsername {
seedUserCount++
seedUserLocked = user.Locked
}
}
if seedUserCount != 1 {
t.Errorf("Expected exactly 1 seed user, got %d", seedUserCount)
}
if !seedUserLocked {
t.Error("Expected seed user to be locked after first seed run")
}
})
t.Run("second run reuses seed user", func(t *testing.T) {
@@ -370,6 +380,10 @@ func TestSeedCommandIdempotency(t *testing.T) {
if seedUserBefore.ID != seedUserAfter.ID {
t.Errorf("Expected seed user to be reused (ID %d), but got different user (ID %d)", seedUserBefore.ID, seedUserAfter.ID)
}
if !seedUserAfter.Locked {
t.Error("Expected reused seed user to remain locked")
}
})
t.Run("database remains consistent after multiple runs", func(t *testing.T) {