From 82f0f7b82c8649f95f6199331a0ce944450995c0 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 14 May 2026 16:54:04 +0200 Subject: [PATCH] test(invites): verify groupIds are forwarded from request body in InviteController Co-Authored-By: Claude Sonnet 4.6 --- .../user/InviteControllerTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/user/InviteControllerTest.java b/backend/src/test/java/org/raddatz/familienarchiv/user/InviteControllerTest.java index 0af2a999..03b2e641 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/user/InviteControllerTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/user/InviteControllerTest.java @@ -20,10 +20,13 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; +import org.mockito.ArgumentCaptor; + import java.time.LocalDateTime; import java.util.List; import java.util.UUID; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -147,6 +150,30 @@ class InviteControllerTest { .andExpect(jsonPath("$.label").value("Für Familie")); } + @Test + @WithMockUser(username = "admin@test.com", authorities = {"ADMIN_USER"}) + void createInvite_forwardsGroupIdsToService() throws Exception { + UUID groupId = UUID.randomUUID(); + AppUser admin = AppUser.builder().id(UUID.randomUUID()).email("admin@test.com").build(); + when(userService.findByEmail("admin@test.com")).thenReturn(admin); + + InviteToken savedToken = InviteToken.builder() + .id(UUID.randomUUID()).code("ABCDE12345").useCount(0).build(); + when(inviteService.createInvite(any(), eq(admin))).thenReturn(savedToken); + when(inviteService.toListItemDTO(any(), anyString())) + .thenReturn(makeInviteDTO(savedToken.getId(), "ABCDE12345")); + + String body = "{\"groupIds\":[\"" + groupId + "\"]}"; + mockMvc.perform(post("/api/invites") + .contentType(MediaType.APPLICATION_JSON) + .content(body)) + .andExpect(status().isCreated()); + + ArgumentCaptor captor = ArgumentCaptor.forClass(CreateInviteRequest.class); + verify(inviteService).createInvite(captor.capture(), eq(admin)); + assertThat(captor.getValue().getGroupIds()).containsExactly(groupId); + } + // ─── DELETE /api/invites/{id} ───────────────────────────────────────────── @Test