diff --git a/goofy-server/src/main/java/de/itvsh/goofy/RootController.java b/goofy-server/src/main/java/de/itvsh/goofy/RootController.java index 24daf2d39e3d1586f1185d66a22124cdd3ab661e..6c92d0e8d98d4630d77d6f1c3abe94c74a2a9378 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/RootController.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/RootController.java @@ -60,6 +60,8 @@ public class RootController { static final String REL_DOWNLOAD_TOKEN = "downloadToken"; static final String REL_CURRENT_USER = "currentUser"; + static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted"; + @Autowired(required = false) public BuildProperties buildProperties; @Autowired @@ -81,7 +83,11 @@ public class RootController { linkTo(RootController.class).withSelfRel(), linkTo(VorgangController.class).withRel(REL_VORGAENGE), linkTo(DownloadTokenController.class).withRel(REL_DOWNLOAD_TOKEN), - Link.of(userManagerUrlProvider.getUserProfileSearchTemplate(), REL_SEARCH_USER)) + Link.of(userManagerUrlProvider.getUserProfileSearchTemplate() + .queryParam(USER_PROFILE_SEARCH_DELETED_PARAM, false) + .build(false) + .toUriString(), + REL_SEARCH_USER)) .ifMatch(this::hasRoleAndSearchServerAvailable).addLinks( buildVorgangListByPageLink(REL_SEARCH, Optional.empty())); diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserManagerUrlProvider.java b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserManagerUrlProvider.java index 04a5daefde8a98a11599610823d7e02d34255f4d..795e9bc581b82df665df093484ad0c57818e5d2f 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserManagerUrlProvider.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserManagerUrlProvider.java @@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.itvsh.goofy.postfach.PostfachMail; +import org.springframework.web.util.UriComponentsBuilder; //FIXME add missing tests @Service @@ -53,8 +54,8 @@ public class UserManagerUrlProvider { return userManagerProperties.getInternalurl() + userManagerProperties.getProfileTemplate(); } - public String getUserProfileSearchTemplate() { - return userManagerProperties.getUrl() + userManagerProperties.getSearchTemplate(); + public UriComponentsBuilder getUserProfileSearchTemplate() { + return UriComponentsBuilder.fromUriString(userManagerProperties.getUrl() + userManagerProperties.getSearchTemplate()); } /** @deprecated for migration only */ diff --git a/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java index 079520b7a8c70287892fbd67f7ce88fc029f8a79..9dab37319a45efd8fd17c1515078fe4aac062021 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/RootControllerTest.java @@ -54,6 +54,7 @@ import de.itvsh.goofy.common.user.UserProfileTestFactory; import de.itvsh.goofy.common.user.UserRemoteService; import de.itvsh.goofy.common.user.UserRole; import de.itvsh.goofy.system.SystemStatusService; +import org.springframework.web.util.UriComponentsBuilder; class RootControllerTest { @@ -79,7 +80,8 @@ class RootControllerTest { when(currentUserService.getUserId()).thenReturn(UserId.from("42")); when(internalUserIdService.getUserId(any())).thenReturn(Optional.empty()); - when(userManagerUrlProvider.getUserProfileSearchTemplate()).thenReturn("UserProfileSearchTemplateDummy/$"); + when(userManagerUrlProvider.getUserProfileSearchTemplate()).thenReturn( + UriComponentsBuilder.fromUriString("UserProfileSearchTemplateDummy/$")); } @DisplayName("Links for user") @@ -310,6 +312,25 @@ class RootControllerTest { } } } + + @DisplayName("User profile search") + @Nested + class TestUserProfileSearch { + + @BeforeEach + void init() { + when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true); + when(userManagerUrlProvider.getUserProfileSearchTemplate()).thenReturn( + UriComponentsBuilder.fromUriString("/api/userProfiles/?searchBy={searchBy}")); + } + + @Test + void shouldAlwaysSearchForNotDeletedUserProfiles() { + var model = controller.getRootResource(); + assertThat(model.getLink(RootController.REL_SEARCH_USER)).isPresent().get().extracting(Link::getHref).isEqualTo( + "/api/userProfiles/?searchBy={searchBy}&deleted=false"); + } + } } @DisplayName("Root resource") @@ -320,7 +341,8 @@ class RootControllerTest { void initTest() { when(currentUserService.getUserId()).thenReturn(UserId.from("42")); when(internalUserIdService.getUserId(any())).thenReturn(Optional.empty()); - when(userManagerUrlProvider.getUserProfileSearchTemplate()).thenReturn("UserProfileSearchTemplateDummy/$"); + when(userManagerUrlProvider.getUserProfileSearchTemplate()).thenReturn( + UriComponentsBuilder.fromUriString("UserProfileSearchTemplateDummy/$")); } @Test