diff options
author | Julien Camus <julien.camus@sonarsource.com> | 2025-07-08 18:29:14 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2025-07-08 20:03:57 +0000 |
commit | 051dd8000d1156e2d25fb949e427a0de2f8475d2 (patch) | |
tree | 9b1b81fd7a9b7dbc5400b16a00d1db33dc21f01e /server/sonar-webserver-webapi-v2/src/test/java/org | |
parent | 75b9fb6dd9edee86d61511256437f062beefe3e5 (diff) | |
download | sonarqube-master.tar.gz sonarqube-master.zip |
Diffstat (limited to 'server/sonar-webserver-webapi-v2/src/test/java/org')
-rw-r--r-- | server/sonar-webserver-webapi-v2/src/test/java/org/sonar/server/v2/api/projectbindings/controller/DefaultProjectBindingsControllerTest.java | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/server/sonar-webserver-webapi-v2/src/test/java/org/sonar/server/v2/api/projectbindings/controller/DefaultProjectBindingsControllerTest.java b/server/sonar-webserver-webapi-v2/src/test/java/org/sonar/server/v2/api/projectbindings/controller/DefaultProjectBindingsControllerTest.java index 65ef60637d1..51014f1c901 100644 --- a/server/sonar-webserver-webapi-v2/src/test/java/org/sonar/server/v2/api/projectbindings/controller/DefaultProjectBindingsControllerTest.java +++ b/server/sonar-webserver-webapi-v2/src/test/java/org/sonar/server/v2/api/projectbindings/controller/DefaultProjectBindingsControllerTest.java @@ -39,8 +39,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.sonar.db.permission.ProjectPermission.ADMIN; import static org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS; +import static org.sonar.db.permission.ProjectPermission.ADMIN; import static org.sonar.server.v2.WebApiEndpoints.PROJECT_BINDINGS_ENDPOINT; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; @@ -223,6 +223,85 @@ class DefaultProjectBindingsControllerTest { """)); } + @Test + void searchProjectBindings_whenRepositoryUrlUsed_shouldForwardRepositoryUrlParameter() throws Exception { + userSession.logIn().addPermission(PROVISION_PROJECTS); + when(projectBindingsService.findProjectBindingsByRequest(any())).thenReturn(new SearchResults<>(List.of(), 0)); + + mockMvc + .perform(get(PROJECT_BINDINGS_ENDPOINT) + .param("repositoryUrl", "https://github.com/org/repo") + .param("pageIndex", "1") + .param("pageSize", "50")) + .andExpect(status().isOk()); + + ArgumentCaptor<ProjectBindingsSearchRequest> requestCaptor = ArgumentCaptor.forClass(ProjectBindingsSearchRequest.class); + verify(projectBindingsService).findProjectBindingsByRequest(requestCaptor.capture()); + assertThat(requestCaptor.getValue().repositoryUrl()).isEqualTo("https://github.com/org/repo"); + assertThat(requestCaptor.getValue().repository()).isNull(); + assertThat(requestCaptor.getValue().dopSettingId()).isNull(); + assertThat(requestCaptor.getValue().page()).isEqualTo(1); + assertThat(requestCaptor.getValue().pageSize()).isEqualTo(50); + } + + @Test + void searchProjectBindings_whenRepositoryUrlWithRepositoryParameter_shouldReturnBadRequest() throws Exception { + userSession.logIn().addPermission(PROVISION_PROJECTS); + + mockMvc + .perform(get(PROJECT_BINDINGS_ENDPOINT) + .param("repositoryUrl", "https://github.com/org/repo") + .param("repository", "repo")) + .andExpect(status().isBadRequest()); + } + + @Test + void searchProjectBindings_whenRepositoryUrlWithDopSettingIdParameter_shouldReturnBadRequest() throws Exception { + userSession.logIn().addPermission(PROVISION_PROJECTS); + + mockMvc + .perform(get(PROJECT_BINDINGS_ENDPOINT) + .param("repositoryUrl", "https://github.com/org/repo") + .param("dopSettingId", "setting123")) + .andExpect(status().isBadRequest()); + } + + @Test + void searchProjectBindings_whenRepositoryUrlReturnsResults_shouldReturnThem() throws Exception { + userSession.logIn().addPermission(PROVISION_PROJECTS); + + ProjectBindingInformation dto1 = projectBindingInformation("1"); + List<ProjectBindingInformation> expectedResults = List.of(dto1); + when(projectBindingsService.findProjectBindingsByRequest(any())).thenReturn(new SearchResults<>(expectedResults, expectedResults.size())); + + mockMvc + .perform(get(PROJECT_BINDINGS_ENDPOINT) + .param("repositoryUrl", "https://github.com/org/repo") + .param("pageIndex", "1") + .param("pageSize", "50")) + .andExpectAll( + status().isOk(), + content().json(""" + { + "projectBindings": [ + { + "id": "uuid_1", + "devOpsPlatformSettingId": "almSettingUuid_1", + "projectId": "projectUuid_1", + "projectKey": "projectKey_1", + "repository": "almRepo_1", + "slug": "almSlug_1" + } + ], + "page": { + "pageIndex": 1, + "pageSize": 50, + "total": 1 + } + } + """)); + } + private static ProjectAlmSettingDto mockProjectAlmSettingDto(String i) { ProjectAlmSettingDto dto = mock(); when(dto.getUuid()).thenReturn("uuid_" + i); |