Search in sources :

Example 6 with PROVISION_PROJECTS

use of org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS in project sonarqube by SonarSource.

the class SearchBitbucketServerReposAction method doHandle.

private SearchBitbucketserverReposWsResponse doHandle(Request request) {
    try (DbSession dbSession = dbClient.openSession(false)) {
        userSession.checkLoggedIn().checkPermission(PROVISION_PROJECTS);
        String almSettingKey = request.mandatoryParam(PARAM_ALM_SETTING);
        String userUuid = requireNonNull(userSession.getUuid(), "User UUID cannot be null");
        AlmSettingDto almSettingDto = dbClient.almSettingDao().selectByKey(dbSession, almSettingKey).orElseThrow(() -> new NotFoundException(String.format("ALM Setting '%s' not found", almSettingKey)));
        Optional<AlmPatDto> almPatDto = dbClient.almPatDao().selectByUserAndAlmSetting(dbSession, userUuid, almSettingDto);
        String projectKey = request.param(PARAM_PROJECT_NAME);
        String repoName = request.param(PARAM_REPO_NAME);
        String pat = almPatDto.map(AlmPatDto::getPersonalAccessToken).orElseThrow(() -> new IllegalArgumentException("No personal access token found"));
        String url = requireNonNull(almSettingDto.getUrl(), "ALM url cannot be null");
        RepositoryList gsonBBSRepoList = bitbucketServerRestClient.getRepos(url, pat, projectKey, repoName);
        Map<String, String> sqProjectsKeyByBBSKey = getSqProjectsKeyByBBSKey(dbSession, almSettingDto, gsonBBSRepoList);
        List<BBSRepo> bbsRepos = gsonBBSRepoList.getValues().stream().map(gsonBBSRepo -> toBBSRepo(gsonBBSRepo, sqProjectsKeyByBBSKey)).collect(toList());
        SearchBitbucketserverReposWsResponse.Builder builder = SearchBitbucketserverReposWsResponse.newBuilder().setIsLastPage(gsonBBSRepoList.isLastPage()).addAllRepositories(bbsRepos);
        return builder.build();
    }
}
Also used : AlmSettingDto(org.sonar.db.alm.setting.AlmSettingDto) Arrays(java.util.Arrays) SearchBitbucketserverReposWsResponse(org.sonarqube.ws.AlmIntegrations.SearchBitbucketserverReposWsResponse) PROVISION_PROJECTS(org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS) Function(java.util.function.Function) DbSession(org.sonar.db.DbSession) TreeSet(java.util.TreeSet) Request(org.sonar.api.server.ws.Request) WebService(org.sonar.api.server.ws.WebService) ProjectAlmSettingDto(org.sonar.db.alm.setting.ProjectAlmSettingDto) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) Objects.requireNonNull(java.util.Objects.requireNonNull) Response(org.sonar.api.server.ws.Response) ProjectAlmSettingDao(org.sonar.db.alm.setting.ProjectAlmSettingDao) AlmPatDto(org.sonar.db.alm.pat.AlmPatDto) Collectors.toSet(java.util.stream.Collectors.toSet) ProjectDao(org.sonar.db.project.ProjectDao) Set(java.util.Set) BinaryOperator(java.util.function.BinaryOperator) Repository(org.sonar.alm.client.bitbucketserver.Repository) NotFoundException(org.sonar.server.exceptions.NotFoundException) RepositoryList(org.sonar.alm.client.bitbucketserver.RepositoryList) DbClient(org.sonar.db.DbClient) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) BBSRepo(org.sonarqube.ws.AlmIntegrations.BBSRepo) ProjectDto(org.sonar.db.project.ProjectDto) Optional(java.util.Optional) AlmIntegrationsWsAction(org.sonar.server.almintegration.ws.AlmIntegrationsWsAction) UserSession(org.sonar.server.user.UserSession) BitbucketServerRestClient(org.sonar.alm.client.bitbucketserver.BitbucketServerRestClient) WsUtils.writeProtobuf(org.sonar.server.ws.WsUtils.writeProtobuf) AlmPatDto(org.sonar.db.alm.pat.AlmPatDto) NotFoundException(org.sonar.server.exceptions.NotFoundException) SearchBitbucketserverReposWsResponse(org.sonarqube.ws.AlmIntegrations.SearchBitbucketserverReposWsResponse) DbSession(org.sonar.db.DbSession) BBSRepo(org.sonarqube.ws.AlmIntegrations.BBSRepo) RepositoryList(org.sonar.alm.client.bitbucketserver.RepositoryList) AlmSettingDto(org.sonar.db.alm.setting.AlmSettingDto) ProjectAlmSettingDto(org.sonar.db.alm.setting.ProjectAlmSettingDto)

Example 7 with PROVISION_PROJECTS

use of org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS in project sonarqube by SonarSource.

the class ListAction method doHandle.

private ListWsResponse doHandle(Request request) {
    try (DbSession dbSession = dbClient.openSession(false)) {
        Request.StringParam projectKey = request.getParam(PARAM_PROJECT);
        if (projectKey.isPresent()) {
            ProjectDto project = componentFinder.getProjectByKey(dbSession, projectKey.getValue());
            userSession.checkProjectPermission(ADMIN, project);
        } else {
            userSession.checkPermission(PROVISION_PROJECTS);
        }
        List<AlmSettingDto> settings = dbClient.almSettingDao().selectAll(dbSession);
        List<AlmSetting> wsAlmSettings = settings.stream().sorted(Comparator.comparing(AlmSettingDto::getKey)).map(almSetting -> {
            AlmSetting.Builder almSettingBuilder = AlmSetting.newBuilder().setKey(almSetting.getKey()).setAlm(AlmSettingsSupport.toAlmWs(almSetting.getAlm()));
            if (almSetting.getAlm() == ALM.BITBUCKET_CLOUD) {
                almSettingBuilder.setUrl(BITBUCKETCLOUD_ROOT_URL + almSetting.getAppId() + "/");
            } else {
                ofNullable(almSetting.getUrl()).ifPresent(almSettingBuilder::setUrl);
            }
            return almSettingBuilder.build();
        }).collect(Collectors.toList());
        return ListWsResponse.newBuilder().addAllAlmSettings(wsAlmSettings).build();
    }
}
Also used : ProjectDto(org.sonar.db.project.ProjectDto) AlmSettingDto(org.sonar.db.alm.setting.AlmSettingDto) ComponentFinder(org.sonar.server.component.ComponentFinder) AlmSetting(org.sonarqube.ws.AlmSettings.AlmSetting) Optional.ofNullable(java.util.Optional.ofNullable) PROVISION_PROJECTS(org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS) ALM(org.sonar.db.alm.setting.ALM) ListWsResponse(org.sonarqube.ws.AlmSettings.ListWsResponse) Collectors(java.util.stream.Collectors) DbSession(org.sonar.db.DbSession) ADMIN(org.sonar.api.web.UserRole.ADMIN) Request(org.sonar.api.server.ws.Request) DbClient(org.sonar.db.DbClient) List(java.util.List) WebService(org.sonar.api.server.ws.WebService) Response(org.sonar.api.server.ws.Response) ProjectDto(org.sonar.db.project.ProjectDto) Change(org.sonar.api.server.ws.Change) UserSession(org.sonar.server.user.UserSession) Comparator(java.util.Comparator) WsUtils.writeProtobuf(org.sonar.server.ws.WsUtils.writeProtobuf) DbSession(org.sonar.db.DbSession) AlmSetting(org.sonarqube.ws.AlmSettings.AlmSetting) Request(org.sonar.api.server.ws.Request) AlmSettingDto(org.sonar.db.alm.setting.AlmSettingDto)

Example 8 with PROVISION_PROJECTS

use of org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS in project sonarqube by SonarSource.

the class ReportSubmitterTest method submit_with_characteristics_fails_with_ISE_when_no_branch_support_delegate.

@Test
public void submit_with_characteristics_fails_with_ISE_when_no_branch_support_delegate() {
    userSession.addPermission(GlobalPermission.SCAN).addPermission(PROVISION_PROJECTS);
    mockSuccessfulPrepareSubmitCall();
    when(permissionTemplateService.wouldUserHaveScanPermissionWithDefaultTemplate(any(), any(), eq(PROJECT_KEY))).thenReturn(true);
    Map<String, String> nonEmptyCharacteristics = IntStream.range(0, 1 + new Random().nextInt(5)).boxed().collect(uniqueIndex(i -> randomAlphabetic(i + 10), i -> randomAlphabetic(i + 20)));
    InputStream reportInput = IOUtils.toInputStream("{binary}", UTF_8);
    assertThatThrownBy(() -> underTest.submit(PROJECT_KEY, PROJECT_NAME, nonEmptyCharacteristics, reportInput)).isInstanceOf(IllegalStateException.class).hasMessage("Current edition does not support branch feature");
}
Also used : CeTaskTypes(org.sonar.db.ce.CeTaskTypes) IntStream.rangeClosed(java.util.stream.IntStream.rangeClosed) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) GlobalPermission(org.sonar.db.permission.GlobalPermission) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Random(java.util.Random) DbSession(org.sonar.db.DbSession) BadRequestException(org.sonar.server.exceptions.BadRequestException) Mockito.verifyNoInteractions(org.mockito.Mockito.verifyNoInteractions) SCAN(org.sonar.db.permission.GlobalPermission.SCAN) Map(java.util.Map) Visibility(org.sonar.server.project.Visibility) DbTester(org.sonar.db.DbTester) System2(org.sonar.api.utils.System2) StandardCharsets(java.nio.charset.StandardCharsets) String.format(java.lang.String.format) PermissionTemplateService(org.sonar.server.permission.PermissionTemplateService) IOUtils(org.apache.commons.io.IOUtils) ComponentDto(org.sonar.db.component.ComponentDto) ForbiddenException(org.sonar.server.exceptions.ForbiddenException) MoreCollectors.uniqueIndex(org.sonar.core.util.stream.MoreCollectors.uniqueIndex) Mockito.mock(org.mockito.Mockito.mock) IntStream(java.util.stream.IntStream) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) SCAN_EXECUTION(org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION) FavoriteUpdater(org.sonar.server.favorite.FavoriteUpdater) UserDto(org.sonar.db.user.UserDto) I18n(org.sonar.core.i18n.I18n) PROVISION_PROJECTS(org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS) ProjectDefaultVisibility(org.sonar.server.project.ProjectDefaultVisibility) TestProjectIndexers(org.sonar.server.es.TestProjectIndexers) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) Before(org.junit.Before) ComponentUpdater(org.sonar.server.component.ComponentUpdater) UserSessionRule(org.sonar.server.tester.UserSessionRule) Collections.emptyMap(java.util.Collections.emptyMap) RandomStringUtils.randomAlphabetic(org.apache.commons.lang.RandomStringUtils.randomAlphabetic) UTF_8(java.nio.charset.StandardCharsets.UTF_8) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) CeQueueImpl(org.sonar.ce.queue.CeQueueImpl) SequenceUuidFactory(org.sonar.core.util.SequenceUuidFactory) Mockito.verify(org.mockito.Mockito.verify) Rule(org.junit.Rule) CeTaskSubmit(org.sonar.ce.queue.CeTaskSubmit) InputStream(java.io.InputStream) CeQueue(org.sonar.ce.queue.CeQueue) ComponentTesting.newModuleDto(org.sonar.db.component.ComponentTesting.newModuleDto) Random(java.util.Random) InputStream(java.io.InputStream) Test(org.junit.Test)

Aggregations

DbSession (org.sonar.db.DbSession)8 PROVISION_PROJECTS (org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS)8 Map (java.util.Map)7 List (java.util.List)5 Optional (java.util.Optional)5 Request (org.sonar.api.server.ws.Request)5 Response (org.sonar.api.server.ws.Response)5 WebService (org.sonar.api.server.ws.WebService)5 DbClient (org.sonar.db.DbClient)5 Objects.requireNonNull (java.util.Objects.requireNonNull)4 Set (java.util.Set)4 BinaryOperator (java.util.function.BinaryOperator)4 Collectors.toList (java.util.stream.Collectors.toList)4 Collectors.toSet (java.util.stream.Collectors.toSet)4 InputStream (java.io.InputStream)3 StandardCharsets (java.nio.charset.StandardCharsets)3 Collections.emptyMap (java.util.Collections.emptyMap)3 Random (java.util.Random)3 IntStream (java.util.stream.IntStream)3 AlmSettingDto (org.sonar.db.alm.setting.AlmSettingDto)3