From: Aurelien Poscia Date: Mon, 19 Aug 2024 15:25:19 +0000 (+0200) Subject: SONAR-22807 Modify GitLab provisioning ITs to include custom mapping X-Git-Tag: 10.7.0.96327~218 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=066557d1191fc8e7f785c08c7446c9a6031cd069;p=sonarqube.git SONAR-22807 Modify GitLab provisioning ITs to include custom mapping --- diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java index 257e36b2ed0..73254c4d5c1 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java @@ -38,6 +38,7 @@ import org.sonarqube.ws.client.favorites.FavoritesService; import org.sonarqube.ws.client.github.configuration.GithubConfigurationService; import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService; import org.sonarqube.ws.client.gitlab.configuration.GitlabConfigurationService; +import org.sonarqube.ws.client.gitlab.provisioning.permissions.GitlabPermissionService; import org.sonarqube.ws.client.gitlab.synchronization.run.GitlabSynchronizationRunService; import org.sonarqube.ws.client.governancereports.GovernanceReportsService; import org.sonarqube.ws.client.hotspots.HotspotsService; @@ -149,6 +150,7 @@ class DefaultWsClient implements WsClient { private final GithubConfigurationService githubConfigurationService; private final GithubPermissionsService githubPermissionsService; private final GitlabConfigurationService gitlabConfigurationService; + private final GitlabPermissionService gitlabPermissionsService; private final GitlabSynchronizationRunService gitlabSynchronizationRunService; @@ -213,6 +215,7 @@ class DefaultWsClient implements WsClient { this.githubConfigurationService = new GithubConfigurationService(wsConnector); this.githubPermissionsService = new GithubPermissionsService(wsConnector); this.gitlabConfigurationService = new GitlabConfigurationService(wsConnector); + this.gitlabPermissionsService = new GitlabPermissionService(wsConnector); this.gitlabSynchronizationRunService = new GitlabSynchronizationRunService(wsConnector); } @@ -312,6 +315,11 @@ class DefaultWsClient implements WsClient { return gitlabConfigurationService; } + @Override + public GitlabPermissionService gitlabPermissionsService() { + return gitlabPermissionsService; + } + @Override public GitlabSynchronizationRunService gitlabSynchronizationRunService() { return gitlabSynchronizationRunService; diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java index 64117e79d9f..4249cf6bab3 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java @@ -38,6 +38,7 @@ import org.sonarqube.ws.client.favorites.FavoritesService; import org.sonarqube.ws.client.github.configuration.GithubConfigurationService; import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService; import org.sonarqube.ws.client.gitlab.configuration.GitlabConfigurationService; +import org.sonarqube.ws.client.gitlab.provisioning.permissions.GitlabPermissionService; import org.sonarqube.ws.client.gitlab.synchronization.run.GitlabSynchronizationRunService; import org.sonarqube.ws.client.governancereports.GovernanceReportsService; import org.sonarqube.ws.client.hotspots.HotspotsService; @@ -137,6 +138,8 @@ public interface WsClient { GitlabConfigurationService gitlabConfigurationService(); + GitlabPermissionService gitlabPermissionsService(); + GitlabSynchronizationRunService gitlabSynchronizationRunService(); GovernanceReportsService governanceReports(); diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/AddGitlabPermissionMappingRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/AddGitlabPermissionMappingRequest.java new file mode 100644 index 00000000000..655bba02172 --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/AddGitlabPermissionMappingRequest.java @@ -0,0 +1,26 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.ws.client.gitlab.provisioning.permissions; + +import org.sonarqube.ws.client.github.provisioning.permissions.SonarqubePermissions; + +public record AddGitlabPermissionMappingRequest(String gitlabRole, SonarqubePermissions permissions) { + +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/GitlabPermissionService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/GitlabPermissionService.java new file mode 100644 index 00000000000..bad74534d58 --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/GitlabPermissionService.java @@ -0,0 +1,45 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.ws.client.gitlab.provisioning.permissions; + +import com.google.gson.Gson; +import org.sonarqube.ws.MediaTypes; +import org.sonarqube.ws.client.BaseService; +import org.sonarqube.ws.client.PostRequest; +import org.sonarqube.ws.client.WsConnector; +import org.sonarqube.ws.client.WsResponse; + +public class GitlabPermissionService extends BaseService { + + public GitlabPermissionService(WsConnector wsConnector) { + super(wsConnector, "api/v2"); + } + + public void addPermissionMapping(AddGitlabPermissionMappingRequest addLabPermissionMappingRequest) { + callEndpointToAddPermissionMapping(addLabPermissionMappingRequest).close(); + } + + private WsResponse callEndpointToAddPermissionMapping(AddGitlabPermissionMappingRequest addGitlabPermissionMappingRequest) { + return call( + new PostRequest(path("dop-translation/gitlab-permission-mappings")) + .setBody(new Gson().toJson(addGitlabPermissionMappingRequest)) + .setMediaType(MediaTypes.JSON)); + } +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/package-info.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/package-info.java new file mode 100644 index 00000000000..a9a6b52bc9c --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/gitlab/provisioning/permissions/package-info.java @@ -0,0 +1,23 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +@ParametersAreNonnullByDefault +package org.sonarqube.ws.client.gitlab.provisioning.permissions; + +import javax.annotation.ParametersAreNonnullByDefault;