Browse Source

SONAR-20532 Add IT for GitHub custom roles

tags/10.3.0.82913
Aurelien Poscia 7 months ago
parent
commit
fbb917ca25

+ 8
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/DefaultWsClient.java View File

@@ -34,6 +34,7 @@ import org.sonarqube.ws.client.duplications.DuplicationsService;
import org.sonarqube.ws.client.editions.EditionsService;
import org.sonarqube.ws.client.emails.EmailsService;
import org.sonarqube.ws.client.favorites.FavoritesService;
import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService;
import org.sonarqube.ws.client.githubprovisioning.GithubProvisioningService;
import org.sonarqube.ws.client.governancereports.GovernanceReportsService;
import org.sonarqube.ws.client.hotspots.HotspotsService;
@@ -142,6 +143,7 @@ class DefaultWsClient implements WsClient {
private final RegulatoryReportsService regulatoryReportsService;
private final SonarLintServerPushService sonarLintPushService;
private final GithubProvisioningService githubProvisioningService;
private final GithubPermissionsService githubPermissionsService;

DefaultWsClient(WsConnector wsConnector) {
this.wsConnector = wsConnector;
@@ -201,6 +203,7 @@ class DefaultWsClient implements WsClient {
this.sonarLintPushService = new SonarLintServerPushService(wsConnector);
this.regulatoryReportsService = new RegulatoryReportsService(wsConnector);
this.githubProvisioningService = new GithubProvisioningService(wsConnector);
this.githubPermissionsService = new GithubPermissionsService(wsConnector);
}

@Override
@@ -279,6 +282,11 @@ class DefaultWsClient implements WsClient {
return favoritesService;
}

@Override
public GithubPermissionsService githubPermissionsService() {
return githubPermissionsService;
}

@Override
public GovernanceReportsService governanceReports() {
return governanceReportsService;

+ 3
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/WsClient.java View File

@@ -34,6 +34,7 @@ import org.sonarqube.ws.client.duplications.DuplicationsService;
import org.sonarqube.ws.client.editions.EditionsService;
import org.sonarqube.ws.client.emails.EmailsService;
import org.sonarqube.ws.client.favorites.FavoritesService;
import org.sonarqube.ws.client.github.provisioning.permissions.GithubPermissionsService;
import org.sonarqube.ws.client.githubprovisioning.GithubProvisioningService;
import org.sonarqube.ws.client.governancereports.GovernanceReportsService;
import org.sonarqube.ws.client.hotspots.HotspotsService;
@@ -125,6 +126,8 @@ public interface WsClient {

FavoritesService favorites();

GithubPermissionsService githubPermissionsService();

GovernanceReportsService governanceReports();

HotspotsService hotspots();

+ 31
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/github/provisioning/permissions/AddGithubPermissionMappingRequest.java View File

@@ -0,0 +1,31 @@
/*
* SonarQube
* Copyright (C) 2009-2023 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.github.provisioning.permissions;

public class AddGithubPermissionMappingRequest {
private final String githubRole;
private final SonarqubePermissions permissions;

public AddGithubPermissionMappingRequest(String githubRole, SonarqubePermissions permissions) {
this.githubRole = githubRole;
this.permissions = permissions;
}

}

+ 49
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/github/provisioning/permissions/GithubPermissionsService.java View File

@@ -0,0 +1,49 @@
/*
* SonarQube
* Copyright (C) 2009-2023 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.github.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 GithubPermissionsService extends BaseService {

public GithubPermissionsService(WsConnector wsConnector) {
super(wsConnector, "api/v2");
}

public void addPermissionMapping(AddGithubPermissionMappingRequest addGithubPermissionMappingRequest) {
try (WsResponse response = callEndpoint(addGithubPermissionMappingRequest)) {
if (!response.isSuccessful()) {
throw new IllegalStateException("Failed to add github permission mapping, http error code: " + response.code());
}
}
}

private WsResponse callEndpoint(AddGithubPermissionMappingRequest addGithubPermissionMappingRequest) {
return call(
new PostRequest(path("github-permission-mappings"))
.setBody(new Gson().toJson(addGithubPermissionMappingRequest))
.setMediaType(MediaTypes.JSON));
}
}

+ 64
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/github/provisioning/permissions/SonarqubePermissions.java View File

@@ -0,0 +1,64 @@
/*
* SonarQube
* Copyright (C) 2009-2023 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.github.provisioning.permissions;

public class SonarqubePermissions {
private final boolean user;
private final boolean codeViewer;
private final boolean issueAdmin;
private final boolean securityHotspotAdmin;

private final boolean admin;

private final boolean scan;

public SonarqubePermissions(boolean user, boolean codeViewer, boolean issueAdmin, boolean securityHotspotAdmin, boolean admin, boolean scan) {
this.user = user;
this.codeViewer = codeViewer;
this.issueAdmin = issueAdmin;
this.securityHotspotAdmin = securityHotspotAdmin;
this.admin = admin;
this.scan = scan;
}

public boolean isUser() {
return user;
}

public boolean isCodeViewer() {
return codeViewer;
}

public boolean isIssueAdmin() {
return issueAdmin;
}

public boolean isSecurityHotspotAdmin() {
return securityHotspotAdmin;
}

public boolean isAdmin() {
return admin;
}

public boolean isScan() {
return scan;
}
}

+ 23
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/github/provisioning/permissions/package-info.java View File

@@ -0,0 +1,23 @@
/*
* SonarQube
* Copyright (C) 2009-2023 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.github.provisioning.permissions;

import javax.annotation.ParametersAreNonnullByDefault;

Loading…
Cancel
Save