package store_test import ( "context" "errors" "testing" "github.com/netcell-it/deklarix/internal/store" ) func TestPasswordResetTokenLifecycle(t *testing.T) { s := openTestStore(t) ctx := context.Background() accID := testAccountID(t, s) userID := testUserID(t, s, accID) tok, err := s.CreatePasswordResetToken(ctx, userID, "test-token-123") if err != nil { t.Fatalf("CreatePasswordResetToken: %v", err) } if tok.UserID != userID || tok.Token != "test-token-123" { t.Fatalf("PasswordResetToken = %+v, unerwartete Werte", tok) } got, err := s.GetValidPasswordResetToken(ctx, "test-token-123") if err != nil || got.ID != tok.ID { t.Fatalf("GetValidPasswordResetToken = %+v, err=%v", got, err) } if err := s.MarkPasswordResetTokenUsed(ctx, tok.ID); err != nil { t.Fatalf("MarkPasswordResetTokenUsed: %v", err) } // Ein verbrauchter Token gilt nicht mehr als gültig. if _, err := s.GetValidPasswordResetToken(ctx, "test-token-123"); !errors.Is(err, store.ErrNotFound) { t.Fatalf("err nach Verbrauch = %v, want ErrNotFound", err) } // Ein unbekannter Token ist von Anfang an ErrNotFound. if _, err := s.GetValidPasswordResetToken(ctx, "existiert-nicht"); !errors.Is(err, store.ErrNotFound) { t.Fatalf("err für unbekannten Token = %v, want ErrNotFound", err) } } func TestSetUserPassword(t *testing.T) { s := openTestStore(t) ctx := context.Background() accID := testAccountID(t, s) userID := testUserID(t, s, accID) if err := s.SetUserPassword(ctx, userID, "neuer-hash"); err != nil { t.Fatalf("SetUserPassword: %v", err) } got, err := s.GetUser(ctx, userID) if err != nil || got.PasswordHash != "neuer-hash" { t.Fatalf("GetUser nach SetUserPassword = %+v, err=%v", got, err) } }