@Test public void select_qgate_id() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate1 = db.qualityGates().insertQualityGate(organization); QGateWithOrgDto qualityGate2 = db.qualityGates().insertQualityGate(organization); ComponentDto project1 = db.components().insertPrivateProject(organization); ComponentDto project2 = db.components().insertPrivateProject(organization); db.qualityGates().associateProjectToQualityGate(project1, qualityGate1); db.qualityGates().associateProjectToQualityGate(project2, qualityGate2); Optional<Long> result = underTest.selectQGateIdByComponentId(dbSession, project1.getId()); assertThat(result).contains(qualityGate1.getId()); }
@SafeVarargs public final QualityGateDto createDefaultQualityGate(OrganizationDto organization, Consumer<QualityGateDto>... dtoPopulators) { QualityGateDto defaultQGate = insertQualityGate(organization, dtoPopulators); setDefaultQualityGate(organization, defaultQGate); return defaultQGate; }
@Test public void return_project_quality_gate_over_default() { ComponentDto project = db.components().insertPrivateProject(); db.qualityGates().createDefaultQualityGate(db.getDefaultOrganization(),qg -> qg.setName("Sonar way")); QualityGateDto dbQualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization(), qg -> qg.setName("My team QG")); db.qualityGates().associateProjectToQualityGate(project, dbQualityGate); Optional<QualityGateFinder.QualityGateData> result = underTest.getQualityGate(dbSession, db.getDefaultOrganization(), project); assertThat(result).isPresent(); assertThat(result.get().getQualityGate().getId()).isEqualTo(dbQualityGate.getId()); assertThat(result.get().isDefault()).isFalse(); }
@Test public void fail_to_create_condition_when_condition_on_same_metric_already_exist() { MetricDto metric = insertMetric(PERCENT); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization()); db.qualityGates().addCondition(qualityGate, metric); expectedException.expect(BadRequestException.class); expectedException.expectMessage(format("Condition on metric '%s' already exists.", metric.getShortName())); underTest.createCondition(db.getSession(), qualityGate, metric.getKey(), "LT", "80"); }
@Test public void project_quality_gate_over_default() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization); QGateWithOrgDto defaultDbQualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().setDefaultQualityGate(organization, defaultDbQualityGate); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().associateProjectToQualityGate(project, qualityGate); logInAsProjectUser(project); GetByProjectResponse result = ws.newRequest() .setParam("project", project.getKey()) .setParam("organization", organization.getKey()) .executeProtobuf(GetByProjectResponse.class); Qualitygates.QualityGate reloaded = result.getQualityGate(); assertThat(reloaded.getName()).isEqualTo(reloaded.getName()); assertThat(reloaded.getDefault()).isFalse(); }
@Test public void default_organization_is_used_when_no_organization_parameter() { OrganizationDto defaultOrganization = db.getDefaultOrganization(); db.qualityGates().createDefaultQualityGate(defaultOrganization); userSession.addPermission(ADMINISTER_QUALITY_GATES, defaultOrganization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(defaultOrganization); OrganizationDto otherOrganization = db.organizations().insert(); QGateWithOrgDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization); ws.newRequest() .setParam(PARAM_ID, valueOf(qualityGate.getId())) .execute(); assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndId(dbSession, defaultOrganization, qualityGate.getId())).isNull(); }
@Test public void show_on_paid_organization() { OrganizationDto organization = db.organizations().insert(o -> o.setSubscription(PAID)); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().setDefaultQualityGate(organization, qualityGate); MetricDto metric = db.measures().insertMetric(); db.qualityGates().addCondition(qualityGate, metric); UserDto user = db.users().insertUser(); userSession.logIn(user).addMembership(organization); ShowWsResponse response = ws.newRequest() .setParam("name", qualityGate.getName()) .setParam("organization", organization.getKey()) .executeProtobuf(ShowWsResponse.class); assertThat(response.getConditionsList()).hasSize(1); }
@Test public void delete_quality_gates() { QualityGateDto builtInQualityGate = db.qualityGates().insertBuiltInQualityGate(); OrganizationDto organization = db.organizations().insert(); db.qualityGates().associateQualityGateToOrganization(builtInQualityGate, organization); OrganizationDto otherOrganization = db.organizations().insert(); db.qualityGates().associateQualityGateToOrganization(builtInQualityGate, otherOrganization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); QGateWithOrgDto qualityGateInOtherOrg = db.qualityGates().insertQualityGate(otherOrganization); logInAsAdministrator(organization); sendRequest(organization); verifyOrganizationDoesNotExist(organization); assertThat(db.select("select uuid as \"uuid\" from quality_gates")) .extracting(row -> (String) row.get("uuid")) .containsExactlyInAnyOrder(qualityGateInOtherOrg.getUuid(), builtInQualityGate.getUuid()); assertThat(db.select("select organization_uuid as \"organizationUuid\" from org_quality_gates")) .extracting(row -> (String) row.get("organizationUuid")) .containsOnly(otherOrganization.getUuid()); // Check built-in quality gate is still available in other organization assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndName(db.getSession(), otherOrganization, "Sonar way")).isNotNull(); verify(projectLifeCycleListeners).onProjectsDeleted(emptySet()); }
@Test public void return_default_quality_gate_for_project() { ComponentDto project = db.components().insertPrivateProject(); QualityGateDto dbQualityGate = db.qualityGates().createDefaultQualityGate(db.getDefaultOrganization(), qg -> qg.setName("Sonar way")); Optional<QualityGateFinder.QualityGateData> result = underTest.getQualityGate(dbSession, db.getDefaultOrganization(), project); assertThat(result).isPresent(); assertThat(result.get().getQualityGate().getId()).isEqualTo(dbQualityGate.getId()); assertThat(result.get().isDefault()).isTrue(); }
@Test public void deleteOrgQualityGatesByOrganization() { OrganizationDto organization = db.organizations().insert(); qualityGateDbTester.insertQualityGate(organization); OrganizationDto otherOrganization = db.organizations().insert(); qualityGateDbTester.insertQualityGate(otherOrganization); underTest.deleteOrgQualityGatesByOrganization(dbSession, organization); dbSession.commit(); assertThat(db.select("select organization_uuid as \"organizationUuid\" from org_quality_gates")) .extracting(row -> (String) row.get("organizationUuid")) .containsOnly(otherOrganization.getUuid()); }
@Test public void ensure_only_that_builtin_is_set_as_default_when_no_default_quality_gate() { insertMetrics(); QualityGateDto builtInQualityGate = db.qualityGates().insertBuiltInQualityGate(); underTest.start(); assertThat(qualityGateFinder.getBuiltInQualityGate(dbSession)).isNotNull(); assertThat(qualityGateFinder.getBuiltInQualityGate(dbSession).getId()).isEqualTo(builtInQualityGate.getId()); }
@Test public void does_not_delete_built_in_quality_gate() { OrganizationDto organization = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(organization); QualityGateDto builtInQualityGate = db.qualityGates().insertBuiltInQualityGate(); db.getDbClient().qualityGateDao().associate(db.getSession(), Uuids.createFast(), organization, builtInQualityGate); db.commit(); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage(format("Operation forbidden for built-in Quality Gate '%s'", builtInQualityGate.getName())); ws.newRequest() .setParam(PARAM_ID, valueOf(builtInQualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
private DbTester(System2 system2, @Nullable String schemaPath, MyBatisConfExtension... confExtensions) { super(TestDb.create(schemaPath, confExtensions)); this.system2 = system2; initDbClient(); this.userTester = new UserDbTester(this); this.componentTester = new ComponentDbTester(this); this.componentLinkTester = new ProjectLinkDbTester(this); this.favoriteTester = new FavoriteDbTester(this); this.eventTester = new EventDbTester(this); this.organizationTester = new OrganizationDbTester(this); this.permissionTemplateTester = new PermissionTemplateDbTester(this); this.propertyTester = new PropertyDbTester(this); this.qualityGateDbTester = new QualityGateDbTester(this); this.issueDbTester = new IssueDbTester(this); this.ruleDbTester = new RuleDbTester(this); this.notificationDbTester = new NotificationDbTester(this); this.rootFlagAssertions = new RootFlagAssertions(this); this.qualityProfileDbTester = new QualityProfileDbTester(this); this.measureDbTester = new MeasureDbTester(this); this.fileSourceTester = new FileSourceTester(this); this.pluginDbTester = new PluginDbTester(this); this.webhookDbTester = new WebhookDbTester(this); this.webhookDeliveryDbTester = new WebhookDeliveryDbTester(this); this.almDbTester = new AlmDbTester(this); }
@Test public void no_content() { OrganizationDto organization = db.organizations().insert(); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); MetricDto metric = db.measures().insertMetric(); QualityGateConditionDto qualityGateCondition = db.qualityGates().addCondition(qualityGate, metric); TestResponse result = ws.newRequest() .setParam(PARAM_ID, valueOf(qualityGateCondition.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); assertThat(result.getStatus()).isEqualTo(HTTP_NO_CONTENT); }
@Test public void fail_when_not_quality_gates_administer() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().createDefaultQualityGate(organization); userSession.logIn("john").addPermission(ADMINISTER_QUALITY_PROFILES, organization); expectedException.expect(ForbiddenException.class); ws.newRequest() .setParam(PARAM_ID, qualityGate.getId().toString()) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
@Test public void fail_when_condition_is_on_disabled_metric() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().setDefaultQualityGate(organization, qualityGate); MetricDto metric = db.measures().insertMetric(); db.qualityGates().addCondition(qualityGate, metric); db.getDbClient().metricDao().disableCustomByKey(db.getSession(), metric.getKey()); db.commit(); expectedException.expect(IllegalStateException.class); expectedException.expectMessage(format("Could not find metric with id %s", metric.getId())); ws.newRequest() .setParam("name", qualityGate.getName()) .setParam("organization", organization.getKey()) .execute(); }
private ComponentDto insertProject(OrganizationDto organization) { db.qualityGates().createDefaultQualityGate(organization); return db.components().insertPrivateProject(organization, "abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project")); }
@Test public void setDefaultQualityGate() { when(system2.now()).thenReturn(DATE_3); OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); underTest.setDefaultQualityGate(dbSession, organization, qualityGate); db.commit(); assertThat(dbClient.qualityGateDao().selectDefault(dbSession, organization).getUuid()).isEqualTo(qualityGate.getUuid()); verifyOrganizationUpdatedAt(organization.getUuid(), DATE_3); }
@Test public void bind_organization_when_installation_id_is_set() { createUserAndLogInAsSystemAdministrator(); db.qualityGates().insertBuiltInQualityGate(); wsTester.newRequest() .setParam(PARAM_NAME, "foo") .setParam("installationId", "ABCD") .execute(); verify(organizationAlmBinding).bindOrganization(any(DbSession.class), any(OrganizationDto.class), eq("ABCD")); }
@Test public void default_organization_is_used_when_no_organization_parameter() { QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization()); db.qualityGates().setDefaultQualityGate(db.getDefaultOrganization(), qualityGate); OrganizationDto otherOrganization = db.organizations().insert(); QGateWithOrgDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization); db.qualityGates().setDefaultQualityGate(otherOrganization, otherQualityGate); ListWsResponse response = ws.newRequest().executeProtobuf(ListWsResponse.class); assertThat(response.getQualitygatesList()) .extracting(QualityGate::getId) .containsExactlyInAnyOrder(qualityGate.getId()); }