void checkProjectBelongsToOrganization(OrganizationDto organization, ComponentDto project) { if (project.getOrganizationUuid().equals(organization.getUuid())) { return; } throw new NotFoundException(format("Project '%s' doesn't exist in organization '%s'", project.getKey(), organization.getKey())); }
private static Components.Component.Builder toWsComponent(ComponentDto component, OrganizationDto organizationDto, Map<String, ComponentDto> referenceComponentsByUuid) { Components.Component.Builder wsComponent = componentDtoToWsComponent(component, organizationDto, Optional.empty()); ComponentDto referenceComponent = referenceComponentsByUuid.get(component.getCopyResourceUuid()); if (referenceComponent != null) { wsComponent.setRefId(referenceComponent.uuid()); wsComponent.setRefKey(referenceComponent.getKey()); } return wsComponent; }
@Test public void should_find_components_with_issues_to_merge_on_long1() { setRootUuid(long1.uuid()); assertThat(underTest.getUuids(fileWithNoIssues.getKey())).isEmpty(); assertThat(underTest.getUuids(fileWithOneOpenIssue.getKey())).containsOnly(fileWithOneOpenIssue.uuid()); assertThat(underTest.getUuids(fileWithOneResolvedIssue.getKey())).containsOnly(fileWithOneResolvedIssue.uuid()); assertThat(underTest.getUuids(fileWithOneOpenTwoResolvedIssues.getKey())).containsOnly(fileWithOneOpenTwoResolvedIssues.uuid()); assertThat(fileWithOneResolvedIssueInLong1Short1.getKey()).isEqualTo(fileWithOneResolvedIssueInLong1Short2.getKey()); assertThat(underTest.getUuids(fileWithOneResolvedIssueInLong1Short1.getKey())).containsOnly( fileWithOneResolvedIssueInLong1Short1.uuid(), fileWithOneResolvedIssueInLong1Short2.uuid()); }
@Test public void empty_queue_and_empty_activity() { ComponentDto project = db.components().insertPrivateProject(); userSession.addProjectPermission(UserRole.USER, project); Ce.ComponentResponse response = ws.newRequest() .setParam(PARAM_COMPONENT, project.getKey()) .executeProtobuf(Ce.ComponentResponse.class); assertThat(response.getQueueCount()).isEqualTo(0); assertThat(response.hasCurrent()).isFalse(); }
@Test public void fail_if_project_exists_but_does_not_belong_to_requested_organization() { OrganizationDto organization = organizationDbTester.insert(); ComponentDto project = componentDbTester.insertPrivateProject(); expectedException.expect(NotFoundException.class); expectedException.expectMessage(format("Project '%s' does not belong to organisation '%s'", project.getKey(), organization.getKey())); userSession.logIn().addProjectPermission(ADMIN, project); wsActionTester.newRequest() .setParam(ORGANIZATION_KEY_PARAM, organization.getKey()) .setParam(PROJECT_KEY_PARAM, project.getKey()) .execute(); }
@Test public void fail_if_not_authorized() { ComponentDto project = insertProject(); userSessionRule.addProjectPermission(UserRole.USER, project); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); callByKey(project.getKey(), ANOTHER_KEY); }
@Test public void fail_if_new_key_is_not_provided() { ComponentDto project = insertProject(); userSessionRule.addProjectPermission(UserRole.ADMIN, project); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The 'to' parameter is missing"); callByKey(project.getKey(), null); }
@Test public void fail_if_both_uuid_and_key_provided() { ComponentDto project = insertProject(); userSessionRule.addProjectPermission(UserRole.ADMIN, project); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Either 'projectId' or 'from' must be provided"); call(project.uuid(), project.getKey(), ANOTHER_KEY); }
@Test(expected = BadRequestException.class) public void fail_on_module_key_as_param() { ComponentDto project = insertOrganizationAndProject(); ComponentDto module = componentDbTester.insertComponent(newModuleDto("bcde", project).setDbKey("palap").setName("Palap")); init(); execute(module.getKey()); }
@Test public void fail_if_no_administer_permission() { userSession.logIn(); ComponentDto project = db.components().insertMainBranch(); expectedException.expect(ForbiddenException.class); expectedException.expectMessage("Insufficient privileges"); tester.newRequest() .setParam("project", project.getKey()) .setParam("name", "branch1") .execute(); }
@Test public void canMarkAsFavorite_is_false_when_not_logged() { ComponentDto project = db.components().insertPrivateProject(); userSession.addProjectPermission(USER, project); String result = ws.newRequest() .setParam("component", project.getKey()) .execute() .getInput(); assertJson(result).isSimilarTo("{\n" + " \"canMarkAsFavorite\": false,\n" + "}\n"); }
@Test public void fail_if_user_does_not_have_permission_on_project() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project)); expectedException.expect(ForbiddenException.class); tester.newRequest().setParam("key", file.getKey()).execute(); }
@Test public void fail_when_insufficient_privileges() { userSession.logIn(); ComponentDto project = db.components().insertPrivateProject(); db.components().insertSnapshot(project); expectedException.expect(ForbiddenException.class); ws.newRequest() .setParam(PARAM_COMPONENT, project.getKey()) .setParam(PARAM_METRIC_KEYS, "ncloc") .executeProtobuf(ComponentTreeWsResponse.class); }
@Test public void return_error_on_private_project() throws ParseException { ComponentDto project = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); userSession.logIn(user).addProjectPermission(USER, project); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .execute(); checkError(response, "Project is invalid"); }
@Test public void branch_settings_contains_project_settings() { ComponentDto project = db.components().insertMainBranch(); db.properties().insertProperties(newComponentPropertyDto(project).setKey("key").setValue("value")); ComponentDto branch = db.components().insertProjectBranch(project); db.properties().insertProperties(newComponentPropertyDto(branch).setKey("sonar.leak.period").setValue("1")); Configuration config = underTest.newProjectConfiguration(project.getKey(), createBranch(branch.getBranch(), false)); assertThat(config.get("key")).hasValue("value"); assertThat(config.get("sonar.leak.period")).hasValue("1"); }
@Test public void several_projects() { ComponentDto project1 = db.components().insertPrivateProject(); ComponentDto project2 = db.components().insertPrivateProject(); ProjectLinkDto link1 = db.componentLinks().insertCustomLink(project1); ProjectLinkDto link2 = db.componentLinks().insertCustomLink(project2); userSession.logIn().setRoot(); SearchWsResponse response = callByKey(project1.getKey()); assertThat(response.getLinksList()) .extracting(Link::getId, Link::getName) .containsExactlyInAnyOrder(tuple(link1.getUuid(), link1.getName())); }
@Test public void quality_gate_failed() { ComponentDto project = db.components().insertPublicProject(); userSession.registerComponents(project); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(project, metric, m -> m.setData(ERROR.name())); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .execute(); checkResponse(response, ERROR); }
@Test public void return_error_if_measure_value_is_null() throws ParseException { ComponentDto project = db.components().insertPublicProject(); userSession.registerComponents(project); MetricDto metric = createQualityGateMetric(); db.measures().insertLiveMeasure(project, metric, m -> m.setValue(null).setData((String) null)); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .setParam("metric", metric.getKey()) .execute(); checkError(response, "Quality gate has not been found"); }
@Test public void fail_when_not_quality_gates_admin() { OrganizationDto organization = db.organizations().insert(); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); ComponentDto project = db.components().insertPrivateProject(organization); userSession.logIn().addPermission(ADMINISTER_QUALITY_PROFILES, project.getOrganizationUuid()); expectedException.expect(ForbiddenException.class); ws.newRequest() .setParam("projectKey", project.getKey()) .setParam("organization", organization.getKey()) .execute(); }
@Test public void return_error_on_private_project() throws ParseException { ComponentDto project = db.components().insertPrivateProject(); UserDto user = db.users().insertUser(); userSession.logIn(user).addProjectPermission(USER, project); MetricDto metric = db.measures().insertMetric(m -> m.setKey(BUGS_KEY).setValueType(INT.name())); TestResponse response = ws.newRequest() .setParam("project", project.getKey()) .setParam("metric", metric.getKey()) .execute(); checkError(response, "Project is invalid"); }