@SafeVarargs private final ComponentDto insertView(OrganizationDto organization, String rootViewQualifier, Consumer<ComponentDto>... dtoPopulators) { ComponentDbTester tester = db.components(); if (rootViewQualifier.equals(Qualifiers.VIEW)) { return random.nextBoolean() ? tester.insertPublicPortfolio(organization, dtoPopulators) : tester.insertPrivatePortfolio(organization, dtoPopulators); } return random.nextBoolean() ? tester.insertPublicApplication(organization, dtoPopulators) : tester.insertPrivatePortfolio(organization, dtoPopulators); }
@Test public void return_measures_on_view() { OrganizationDto organization = db.organizations().insert(); ComponentDto view = db.components().insertPrivatePortfolio(organization); userSession.addProjectPermission(UserRole.USER, view); MetricDto coverage = db.measures().insertMetric(m -> m.setValueType(FLOAT.name())); db.measures().insertLiveMeasure(view, coverage, m -> m.setValue(15.5d)); SearchWsResponse result = call(singletonList(view.getDbKey()), singletonList(coverage.getKey())); List<Measure> measures = result.getMeasuresList(); assertThat(measures).hasSize(1); Measure measure = measures.get(0); assertThat(measure.getMetric()).isEqualTo(coverage.getKey()); assertThat(measure.getValue()).isEqualTo("15.5"); }
@Test public void return_measures_on_sub_view() { OrganizationDto organization = db.organizations().insert(); ComponentDto view = db.components().insertPrivatePortfolio(organization); ComponentDto subView = db.components().insertComponent(newSubView(view)); userSession.addProjectPermission(UserRole.USER, subView); MetricDto metric = db.measures().insertMetric(m -> m.setValueType(FLOAT.name())); db.measures().insertLiveMeasure(subView, metric, m -> m.setValue(15.5d)); SearchWsResponse result = call(singletonList(subView.getDbKey()), singletonList(metric.getKey())); List<Measure> measures = result.getMeasuresList(); assertThat(measures).hasSize(1); Measure measure = measures.get(0); assertThat(measure.getMetric()).isEqualTo(metric.getKey()); assertThat(measure.getValue()).isEqualTo("15.5"); }
@Test public void set_portfolio_homepage() { OrganizationDto organization = db.organizations().insert(); ComponentDto portfolio = db.components().insertPrivatePortfolio(organization); UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "PORTFOLIO") .setParam(PARAM_COMPONENT, portfolio.getKey()) .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("PORTFOLIO"); assertThat(actual.getHomepageParameter()).isEqualTo(portfolio.uuid()); }
@Test public void search_tags_by_portfolio() { OrganizationDto organization = db.getDefaultOrganization(); ComponentDto portfolio = db.components().insertPrivatePortfolio(organization); ComponentDto project = db.components().insertPrivateProject(organization); db.components().insertComponent(newProjectCopy(project, portfolio)); permissionIndexer.allowOnlyAnyone(project); RuleDefinitionDto rule = db.rules().insert(); db.issues().insert(rule, project, project, issue -> issue.setTags(singletonList("cwe"))); issueIndexer.indexOnStartup(emptySet()); viewIndexer.indexOnStartup(emptySet()); userSession.logIn().addMembership(organization); TagsResponse result = ws.newRequest() .setParam("project", portfolio.getKey()) .executeProtobuf(TagsResponse.class); assertThat(result.getTagsList()).containsExactly("cwe"); }
@Test public void return_default_when_set_to_a_portfolio_but_no_rights_on_this_portfolio() { withGovernancePlugin(); ComponentDto portfolio = db.components().insertPrivatePortfolio(db.getDefaultOrganization()); UserDto user = db.users().insertUser(u -> u.setHomepageType("PORTFOLIO").setHomepageParameter(portfolio.uuid())); userSessionRule.logIn(user); CurrentWsResponse response = call(); assertThat(response.getHomepage()) .extracting(CurrentWsResponse.Homepage::getType) .containsExactly(CurrentWsResponse.HomepageType.PROJECTS); }
@Test public void return_homepage_when_set_to_a_portfolio() { withGovernancePlugin(); ComponentDto portfolio = db.components().insertPrivatePortfolio(db.getDefaultOrganization()); UserDto user = db.users().insertUser(u -> u.setHomepageType("PORTFOLIO").setHomepageParameter(portfolio.uuid())); userSessionRule.logIn(user).addProjectPermission(USER, portfolio); CurrentWsResponse response = call(); assertThat(response.getHomepage()) .extracting(CurrentWsResponse.Homepage::getType, CurrentWsResponse.Homepage::getComponent) .containsExactly(CurrentWsResponse.HomepageType.PORTFOLIO, portfolio.getKey()); }
ComponentDto provisionedPortfolio = db.components().insertPrivatePortfolio(organization);
@Test public void search_authors_by_portfolio() { String leia = "leia.organa"; OrganizationDto organization = db.getDefaultOrganization(); ComponentDto portfolio = db.components().insertPrivatePortfolio(organization); ComponentDto project = db.components().insertPrivateProject(organization); db.components().insertComponent(newProjectCopy(project, portfolio)); permissionIndexer.allowOnlyAnyone(project); RuleDefinitionDto rule = db.rules().insert(); db.issues().insert(rule, project, project, issue -> issue.setAuthorLogin(leia)); issueIndexer.indexOnStartup(emptySet()); viewIndexer.indexOnStartup(emptySet()); userSession.logIn().addMembership(organization); assertThat(ws.newRequest() .setParam("project", portfolio.getKey()) .executeProtobuf(AuthorsResponse.class).getAuthorsList()) .containsExactlyInAnyOrder(leia); }
@Test public void update_a_portfolio_to_public() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto portfolio = dbTester.components().insertPrivatePortfolio(organization); userSessionRule.addProjectPermission(UserRole.ADMIN, portfolio); GroupDto group = dbTester.users().insertGroup(organization); dbTester.users().insertProjectPermissionOnGroup(group, UserRole.ISSUE_ADMIN, portfolio); dbTester.users().insertProjectPermissionOnGroup(group, UserRole.USER, portfolio); dbTester.users().insertProjectPermissionOnGroup(group, UserRole.CODEVIEWER, portfolio); UserDto user = dbTester.users().insertUser(); dbTester.users().insertProjectPermissionOnUser(user, UserRole.ADMIN, portfolio); dbTester.users().insertProjectPermissionOnUser(user, UserRole.USER, portfolio); dbTester.users().insertProjectPermissionOnUser(user, UserRole.CODEVIEWER, portfolio); request.setParam(PARAM_PROJECT, portfolio.getDbKey()) .setParam(PARAM_VISIBILITY, PUBLIC) .execute(); assertThat(dbClient.componentDao().selectByUuid(dbSession, portfolio.uuid()).get().isPrivate()).isFalse(); assertThat(dbClient.groupPermissionDao().selectProjectPermissionsOfGroup(dbSession, organization.getUuid(), group.getId(), portfolio.getId())) .containsOnly(UserRole.ISSUE_ADMIN); assertThat(dbClient.userPermissionDao().selectProjectPermissionsOfUser(dbSession, user.getId(), portfolio.getId())) .containsOnly(UserRole.ADMIN); }
@Test public void create_custom_measure_on_a_view() { MetricDto metric = db.measures().insertMetric(m -> m.setUserManaged(true).setValueType(BOOL.name())); OrganizationDto organization = db.organizations().insert(); ComponentDto view = db.components().insertPrivatePortfolio(organization); UserDto user = db.users().insertUser(); userSession.logIn(user).addProjectPermission(ADMIN, view); ws.newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, view.uuid()) .setParam(CreateAction.PARAM_METRIC_ID, metric.getId().toString()) .setParam(CreateAction.PARAM_DESCRIPTION, "custom-measure-description") .setParam(CreateAction.PARAM_VALUE, "true") .execute(); assertThat(db.getDbClient().customMeasureDao().selectByMetricId(db.getSession(), metric.getId())) .extracting(CustomMeasureDto::getDescription, CustomMeasureDto::getTextValue, CustomMeasureDto::getValue, CustomMeasureDto::getComponentUuid) .containsExactlyInAnyOrder(tuple("custom-measure-description", null, 1d, view.uuid())); }
@Test public void scrollAllFilesForFileMove_ignores_non_file_and_non_ut_component_with_source() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = random.nextBoolean() ? db.components().insertPrivateProject(organization) : db.components().insertPublicProject(organization); db.fileSources().insertFileSource(project); ComponentDto module = db.components().insertComponent(ComponentTesting.newModuleDto(project)); db.fileSources().insertFileSource(module); ComponentDto dir = db.components().insertComponent(ComponentTesting.newDirectory(module, "foo")); db.fileSources().insertFileSource(dir); ComponentAndSource file = insertFileAndSource(module, FILE); ComponentAndSource ut = insertFileAndSource(dir, UNIT_TEST_FILE); ComponentDto portfolio = random.nextBoolean() ? db.components().insertPublicPortfolio(organization) : db.components().insertPrivatePortfolio(organization); db.fileSources().insertFileSource(portfolio); ComponentDto subView = db.components().insertSubView(portfolio); db.fileSources().insertFileSource(subView); ComponentDto application = random.nextBoolean() ? db.components().insertPrivateApplication(organization) : db.components().insertPublicApplication(organization); db.fileSources().insertFileSource(application); RecordingResultHandler resultHandler = new RecordingResultHandler(); underTest.scrollAllFilesForFileMove(dbSession, project.uuid(), resultHandler); underTest.scrollAllFilesForFileMove(dbSession, portfolio.uuid(), resultHandler); underTest.scrollAllFilesForFileMove(dbSession, application.uuid(), resultHandler); assertThat(resultHandler.dtos).hasSize(2); verifyFileMoveRowDto(resultHandler, file); verifyFileMoveRowDto(resultHandler, ut); }
@Test public void create_custom_measure_on_a_sub_view() { MetricDto metric = db.measures().insertMetric(m -> m.setUserManaged(true).setValueType(BOOL.name())); OrganizationDto organization = db.organizations().insert(); ComponentDto view = db.components().insertPrivatePortfolio(organization); ComponentDto subView = db.components().insertSubView(view); UserDto user = db.users().insertUser(); userSession.logIn(user).addProjectPermission(ADMIN, view); ws.newRequest() .setParam(CreateAction.PARAM_PROJECT_ID, subView.uuid()) .setParam(CreateAction.PARAM_METRIC_ID, metric.getId().toString()) .setParam(CreateAction.PARAM_DESCRIPTION, "custom-measure-description") .setParam(CreateAction.PARAM_VALUE, "true") .execute(); assertThat(db.getDbClient().customMeasureDao().selectByMetricId(db.getSession(), metric.getId())) .extracting(CustomMeasureDto::getDescription, CustomMeasureDto::getTextValue, CustomMeasureDto::getValue, CustomMeasureDto::getComponentUuid) .containsExactlyInAnyOrder(tuple("custom-measure-description", null, 1d, subView.uuid())); }
@Test public void project_reference_from_portfolio() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto view = db.components().insertPrivatePortfolio(db.getDefaultOrganization()); SnapshotDto viewAnalysis = db.components().insertSnapshot(view); ComponentDto projectCopy = db.components().insertComponent(newProjectCopy(project, view)); MetricDto ncloc = insertNclocMetric(); db.measures().insertLiveMeasure(projectCopy, ncloc, m -> m.setValue(5d)); ComponentTreeWsResponse result = ws.newRequest() .setParam(PARAM_COMPONENT, view.getKey()) .setParam(PARAM_METRIC_KEYS, ncloc.getKey()) .executeProtobuf(ComponentTreeWsResponse.class); assertThat(result.getComponentsList()) .extracting(Component::getKey, Component::getRefId, Component::getRefKey) .containsExactlyInAnyOrder(tuple(projectCopy.getKey(), project.uuid(), project.getKey())); }