feat: invite management API: DELETE /v1/user/invite/:id (204, cancels a pending invite) and POST /v1/user/invite/:id/renew (200, new code, expires_at = now+3d, created_at = now, resends the invitation email, old link dead)
This commit is contained in:
1 parent
461e93e3b5
commit
153fd8719a
18 files changed
+1147
-44
No files matched your search
@@ -76,6 +76,21 @@ func (m *inviteFakeRepo) Delete(id uint32) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *inviteFakeRepo) Renew(id uint32, hashedCode string, expiresAt time.Time, createdAt time.Time) (invite.Invite, error) {
|
||||
if err := m.fail.trigger("Renew"); err != nil {
|
||||
return invite.Invite{}, err
|
||||
}
|
||||
stored, ok := m.invites[id]
|
||||
if !ok || stored.AcceptedAt != nil {
|
||||
return invite.Invite{}, invite.ErrInviteNotFound
|
||||
}
|
||||
stored.HashedCode = hashedCode
|
||||
stored.ExpiresAt = expiresAt
|
||||
stored.CreatedAt = createdAt
|
||||
m.invites[id] = stored
|
||||
return stored, nil
|
||||
}
|
||||
|
||||
func (m *inviteFakeRepo) AcceptWithUser(id uint32, at time.Time, newUser user.User) (user.User, error) {
|
||||
if err := m.fail.trigger("MarkAccepted"); err != nil {
|
||||
return user.User{}, err
|
||||
@@ -138,6 +153,8 @@ func newInviteFixture(t *testing.T, maxAttempts int) *inviteFixture {
|
||||
getUser := useCases.NewGetUserUseCase(f.users)
|
||||
handler := userhandler.NewInviteHandler(
|
||||
useCases.NewCreateInviteUseCase(f.users, f.invites, f.hasher, f.mail, invitePublicURL),
|
||||
nil,
|
||||
nil,
|
||||
useCases.NewListUsersAndInvitesUseCase(f.users, f.invites),
|
||||
)
|
||||
f.router = chi.NewRouter()
|
||||
|
||||
Reference in new issue
Block a user