aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-webserver-webapi-v2/src/test/java
diff options
context:
space:
mode:
authorJulien Camus <julien.camus@sonarsource.com>2025-07-08 18:29:14 +0200
committersonartech <sonartech@sonarsource.com>2025-07-08 20:03:57 +0000
commit051dd8000d1156e2d25fb949e427a0de2f8475d2 (patch)
tree9b1b81fd7a9b7dbc5400b16a00d1db33dc21f01e /server/sonar-webserver-webapi-v2/src/test/java
parent75b9fb6dd9edee86d61511256437f062beefe3e5 (diff)
downloadsonarqube-master.tar.gz
sonarqube-master.zip
SONAR-25454 Implement repository URL-based project bindings fuzzy searchHEADmaster
Diffstat (limited to 'server/sonar-webserver-webapi-v2/src/test/java')
-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);