feat: activity log producers

This commit is contained in:
fsylvain committed 2026-10-06 22:25:23 +02:00
1 parent 50b1649965
commit e37a46a027
93 files changed
+3396 -440

No files matched your search

+16 -16
View File
@@ -56,20 +56,20 @@ func newAcceptInviteFixture(t *testing.T, maxAttempts int) *acceptInviteFixture
getUser := useCases.NewGetUserUseCase(f.users)
acceptHandler := auth.NewAcceptInviteHandler(
useCases.NewGetInviteUseCase(f.invites, f.hasher),
useCases.NewAcceptInviteUseCase(f.users, f.invites, f.hasher),
useCases.NewAcceptInviteUseCase(f.users, f.invites, f.hasher, discardRecorder),
f.token,
true,
)
meHandler := auth.NewMeHandler(getUser)
listHandler := userhandler.NewInviteHandler(
useCases.NewCreateInviteUseCase(f.users, f.invites, f.hasher, f.mail, invitePublicURL),
useCases.NewCreateInviteUseCase(f.users, f.invites, f.hasher, f.mail, invitePublicURL, discardRecorder),
nil,
nil,
useCases.NewListUsersAndInvitesUseCase(f.users, f.invites),
)
registerHandler := auth.NewLoginHandler(
f.token,
useCases.NewCreateUserUseCase(f.users, f.hasher, f.mail, invitePublicURL),
useCases.NewCreateUserUseCase(f.users, f.hasher, f.mail, invitePublicURL, discardRecorder),
useCases.NewAuthenticateUserUseCase(f.users, f.hasher, discardRecorder),
true,
)
@@ -500,13 +500,13 @@ func TestAcceptInviteUseCase(t *testing.T) {
newUseCase := func() (*useCases.AcceptInviteUseCase, *mockUserRepo, *inviteFakeRepo, *stubHasher) {
users, invites, hasher := inviteInviterRepo(""), newInviteFakeRepo(), &stubHasher{}
invites.users = users
return useCases.NewAcceptInviteUseCase(users, invites, hasher), users, invites, hasher
return useCases.NewAcceptInviteUseCase(users, invites, hasher, discardRecorder), users, invites, hasher
}
command := useCases.AcceptInviteCommand{Code: acceptCode, Username: "lea", Password: acceptPassword}
t.Run("unknown code is invalid", func(t *testing.T) {
uc, _, _, _ := newUseCase()
if _, err := uc.AcceptInvite(command); !errors.Is(err, invite.ErrInviteInvalid) {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, invite.ErrInviteInvalid) {
t.Errorf("expected ErrInviteInvalid, got %v", err)
}
})
@@ -514,7 +514,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
t.Run("empty code is invalid without hashing", func(t *testing.T) {
uc, _, invites, hasher := newUseCase()
invites.seed(pendingInvite(acceptEmail))
if _, err := uc.AcceptInvite(useCases.AcceptInviteCommand{Username: "lea", Password: acceptPassword}); !errors.Is(err, invite.ErrInviteInvalid) || hasher.compareCalls != 0 {
if _, err := uc.AcceptInvite(testCtx, useCases.AcceptInviteCommand{Username: "lea", Password: acceptPassword}); !errors.Is(err, invite.ErrInviteInvalid) || hasher.compareCalls != 0 {
t.Errorf("expected ErrInviteInvalid, got %v", err)
}
})
@@ -524,7 +524,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored := expiredInvite(acceptEmail)
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
if _, err := uc.AcceptInvite(command); !errors.Is(err, invite.ErrInviteExpired) {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, invite.ErrInviteExpired) {
t.Errorf("expected ErrInviteExpired, got %v", err)
}
})
@@ -534,7 +534,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored := pendingInvite(acceptEmail)
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
_, err := uc.AcceptInvite(useCases.AcceptInviteCommand{Code: acceptCode, Username: "marta", Password: acceptPassword})
_, err := uc.AcceptInvite(testCtx, useCases.AcceptInviteCommand{Code: acceptCode, Username: "marta", Password: acceptPassword})
if !errors.Is(err, user.ErrUsernameTaken) || len(users.users) != 1 {
t.Errorf("expected ErrUsernameTaken, got %v", err)
}
@@ -546,7 +546,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
users.fail.failNext("GetByUsername")
if _, err := uc.AcceptInvite(command); !errors.Is(err, errRepositoryFailure) {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, errRepositoryFailure) {
t.Errorf("expected repository failure, got %v", err)
}
})
@@ -557,7 +557,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
users.users[8] = user.User{ID: 8, Username: "leam", Email: "LEA.martin@renew.example"}
if _, err := uc.AcceptInvite(command); !errors.Is(err, invite.ErrEmailHasAccount) {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, invite.ErrEmailHasAccount) {
t.Errorf("expected ErrEmailHasAccount, got %v", err)
}
})
@@ -574,8 +574,8 @@ func TestAcceptInviteUseCase(t *testing.T) {
invites.invites[seeded.ID] = seeded
users.users[8] = user.User{ID: 8, Username: "lea2", Email: acceptEmail}
}}
uc := useCases.NewAcceptInviteUseCase(users, racing, hasher)
if _, err := uc.AcceptInvite(command); !errors.Is(err, invite.ErrInviteInvalid) {
uc := useCases.NewAcceptInviteUseCase(users, racing, hasher, discardRecorder)
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, invite.ErrInviteInvalid) {
t.Errorf("expected ErrInviteInvalid, got %v", err)
}
})
@@ -586,7 +586,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
hasher.hashErr = errors.New("hash boom")
if _, err := uc.AcceptInvite(command); err == nil || len(users.users) != 1 {
if _, err := uc.AcceptInvite(testCtx, command); err == nil || len(users.users) != 1 {
t.Errorf("expected failure without a user, got %v", err)
}
})
@@ -597,7 +597,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored.HashedCode = "hashed:" + acceptCode
seeded := invites.seed(stored)
users.fail.failNext("Create")
if _, err := uc.AcceptInvite(command); !errors.Is(err, errRepositoryFailure) || invites.invites[seeded.ID].AcceptedAt != nil {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, errRepositoryFailure) || invites.invites[seeded.ID].AcceptedAt != nil {
t.Errorf("expected repository failure and a pending invite, got %v", err)
}
})
@@ -609,7 +609,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
seeded := invites.seed(stored)
invites.fail.failNextWith("MarkAccepted", errors.New("mark down"))
users.fail.failNextWith("Delete", errors.New("delete down"))
_, err := uc.AcceptInvite(command)
_, err := uc.AcceptInvite(testCtx, command)
if err == nil || !strings.Contains(err.Error(), "mark down") || strings.Contains(err.Error(), "delete down") {
t.Errorf("unexpected error %v", err)
}
@@ -624,7 +624,7 @@ func TestAcceptInviteUseCase(t *testing.T) {
stored.HashedCode = "hashed:" + acceptCode
invites.seed(stored)
invites.fail.failNextWith("MarkAccepted", invite.ErrInviteNotFound)
if _, err := uc.AcceptInvite(command); !errors.Is(err, invite.ErrInviteInvalid) || len(users.users) != 1 {
if _, err := uc.AcceptInvite(testCtx, command); !errors.Is(err, invite.ErrInviteInvalid) || len(users.users) != 1 {
t.Errorf("expected ErrInviteInvalid, got %v", err)
}
})