diff --git a/eeg_backend/src/main/java/at/mueller/eeg/backend/iam/api/AdminIamController.java b/eeg_backend/src/main/java/at/mueller/eeg/backend/iam/api/AdminIamController.java index 678f135..203c25c 100644 --- a/eeg_backend/src/main/java/at/mueller/eeg/backend/iam/api/AdminIamController.java +++ b/eeg_backend/src/main/java/at/mueller/eeg/backend/iam/api/AdminIamController.java @@ -31,6 +31,23 @@ public class AdminIamController { private final AdminIamService adminIamService; private final UserMapper userMapper; + @GetMapping + @Operation(summary = "Lädt alle User", + description = "Zeigt alle registrierten Benutzer sortiert nach Erstellungsdatum (neueste zuerst).") + @ApiResponse( + responseCode = "200", + description = "Liste aller Benutzer erfolgreich geladen", + content = @Content( + mediaType = MediaType.APPLICATION_JSON_VALUE, + array = @ArraySchema( + schema = @Schema(implementation = UserProfileResponse.class) + ) + ) + ) + public ResponseEntity> getAllUsers() { + return ResponseEntity.ok(userMapper.mapToDto(adminIamService.getAllUsers())); + } + @GetMapping("/pending") @Operation(summary = "Lädt alle wartenden User", description = "Zeigt User im Status PENDING inkl. der Ergebnisse des EDA-Netz-Checks.") diff --git a/eeg_backend/src/test/java/at/mueller/eeg/backend/iam/api/AdminIamControllerTest.java b/eeg_backend/src/test/java/at/mueller/eeg/backend/iam/api/AdminIamControllerTest.java new file mode 100644 index 0000000..e277844 --- /dev/null +++ b/eeg_backend/src/test/java/at/mueller/eeg/backend/iam/api/AdminIamControllerTest.java @@ -0,0 +1,73 @@ +package at.mueller.eeg.backend.iam.api; + +import at.mueller.eeg.backend.iam.api.dto.IamDtos.UserProfileResponse; +import at.mueller.eeg.backend.iam.domain.User; +import at.mueller.eeg.backend.iam.mapper.UserMapper; +import at.mueller.eeg.backend.iam.service.AdminIamService; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.ResponseEntity; + +import java.util.List; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class AdminIamControllerTest { + + @Mock + private AdminIamService adminIamService; + + @Mock + private UserMapper userMapper; + + @InjectMocks + private AdminIamController adminIamController; + + @Test + void getAllUsers() { + User user1 = new User(); + user1.setId(UUID.randomUUID()); + user1.setEmail("alice@example.com"); + + User user2 = new User(); + user2.setId(UUID.randomUUID()); + user2.setEmail("bob@example.com"); + + when(adminIamService.getAllUsers()).thenReturn(List.of(user1, user2)); + + UserProfileResponse dto1 = new UserProfileResponse( + user1.getId(), null, "Alice", "Test", + null, "alice@example.com", "APPROVED"); + UserProfileResponse dto2 = new UserProfileResponse( + user2.getId(), null, "Bob", "Test", + null, "bob@example.com", "PENDING"); + + when(userMapper.mapToDto(List.of(user1, user2))).thenReturn(List.of(dto1, dto2)); + + ResponseEntity> result = adminIamController.getAllUsers(); + + assertEquals(200, result.getStatusCode().value()); + assertEquals(2, result.getBody().size()); + assertEquals("alice@example.com", result.getBody().get(0).email()); + assertEquals("bob@example.com", result.getBody().get(1).email()); + verify(adminIamService).getAllUsers(); + verify(userMapper).mapToDto(List.of(user1, user2)); + } + + @Test + void getAllUsers_empty() { + when(adminIamService.getAllUsers()).thenReturn(List.of()); + when(userMapper.mapToDto(List.of())).thenReturn(List.of()); + + ResponseEntity> result = adminIamController.getAllUsers(); + + assertEquals(200, result.getStatusCode().value()); + assertTrue(result.getBody().isEmpty()); + } +}