aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-webserver-webapi-v2/src/test/java/org
diff options
context:
space:
mode:
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.java81
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);