private QualityGate toQualityGate(DbSession dbSession, QualityGateDto qualityGateDto) { Collection<QualityGateConditionDto> dtos = dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGateDto.getId()); Iterable<Condition> conditions = dtos.stream() .map(input -> metricRepository.getOptionalById(input.getMetricId()) .map(metric -> new Condition(metric, input.getOperator(), input.getErrorThreshold())) .orElse(null)) .filter(Objects::nonNull) .collect(toList(dtos.size())); return new QualityGate(qualityGateDto.getId(), qualityGateDto.getName(), conditions); }
public void associateProject(DbSession dbSession, ComponentDto project, QualityGateDto qualityGate) { dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto() .setKey(SONAR_QUALITYGATE_PROPERTY) .setResourceId(project.getId()) .setValue(String.valueOf(qualityGate.getId()))); }
@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()); }
private ShowWsResponse buildResponse(OrganizationDto organization, QualityGateDto qualityGate, QualityGateDto defaultQualityGate, Collection<QualityGateConditionDto> conditions, Map<Integer, MetricDto> metricsById) { return ShowWsResponse.newBuilder() .setId(qualityGate.getId()) .setName(qualityGate.getName()) .setIsBuiltIn(qualityGate.isBuiltIn()) .addAllConditions(conditions.stream() .map(toWsCondition(metricsById)) .collect(toList())) .setActions(wsSupport.getActions(organization, qualityGate, defaultQualityGate)) .build(); }
private void assertCondition(QualityGateDto qualityGate, MetricDto metric, String operator, String error) { assertThat(dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGate.getId())) .extracting(QualityGateConditionDto::getQualityGateId, QualityGateConditionDto::getMetricId, QualityGateConditionDto::getOperator, QualityGateConditionDto::getErrorThreshold) .containsExactlyInAnyOrder(tuple(qualityGate.getId(), metric.getId().longValue(), operator, error)); }
public QualityGateDto copy(DbSession dbSession, OrganizationDto organizationDto, QualityGateDto qualityGateDto, String destinationName) { QualityGateDto destinationGate = create(dbSession, organizationDto, destinationName); for (QualityGateConditionDto sourceCondition : dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGateDto.getId())) { dbClient.gateConditionDao().insert(new QualityGateConditionDto() .setQualityGateId(destinationGate.getId()) .setMetricId(sourceCondition.getMetricId()) .setOperator(sourceCondition.getOperator()) .setErrorThreshold(sourceCondition.getErrorThreshold()), dbSession); } return destinationGate; }
@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(); }
private void writeQualityGate(JsonWriter json, DbSession session, OrganizationDto organization, ComponentDto component) { QualityGateFinder.QualityGateData qualityGateData = qualityGateFinder.getQualityGate(session, organization, component) .orElseThrow(() -> new NotFoundException(format("Quality Gate not found for %s", component.getKey()))); QualityGateDto qualityGateDto = qualityGateData.getQualityGate(); json.name("qualityGate").beginObject() .prop("key", qualityGateDto.getId()) .prop("name", qualityGateDto.getName()) .prop("isDefault", qualityGateData.isDefault()) .endObject(); }
public QualityGateConditionDto createCondition(DbSession dbSession, QualityGateDto qualityGate, String metricKey, String operator, String errorThreshold) { MetricDto metric = getNonNullMetric(dbSession, metricKey); validateCondition(metric, operator, errorThreshold); checkConditionDoesNotExistOnSameMetric(getConditions(dbSession, qualityGate.getId()), metric); QualityGateConditionDto newCondition = new QualityGateConditionDto().setQualityGateId(qualityGate.getId()) .setMetricId(metric.getId()).setMetricKey(metric.getKey()) .setOperator(operator) .setErrorThreshold(errorThreshold); dbClient.gateConditionDao().insert(newCondition, dbSession); return newCondition; }
@Test public void response_contains_quality_gate() { userSession.addPermission(ADMINISTER_QUALITY_GATES, defaultOrganizationProvider.get().getUuid()); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization()); QualityGate response = ws.newRequest() .setParam(PARAM_ID, qualityGate.getId().toString()) .setParam(PARAM_NAME, "new-name") .executeProtobuf(QualityGate.class); assertThat(response).isNotNull(); assertThat(response.getId()).isNotEqualTo(qualityGate.getId()); assertThat(response.getName()).isEqualTo("new-name"); }
@Test public void testSelectById() { insertQualityGates(); assertThat(underTest.selectById(dbSession, underTest.selectByName(dbSession, "Very strict").getId()).getName()).isEqualTo("Very strict"); assertThat(underTest.selectById(dbSession, -1L)).isNull(); }
@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 return_empty_association() { OrganizationDto organization = db.organizations().insert(); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(organization); SearchResponse response = ws.newRequest() .setParam(PARAM_GATE_ID, valueOf(qualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .executeProtobuf(SearchResponse.class); assertThat(response.getResultsList()).isEmpty(); }
@Test public void fail_when_quality_gates_does_not_belong_to_organization() { OrganizationDto organization = db.organizations().insert(); OrganizationDto otherOrganization = db.organizations().insert(); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(otherOrganization); expectedException.expect(NotFoundException.class); expectedException.expectMessage(format("No quality gate has been found for id %s in organization %s", qualityGate.getId(), organization.getName())); ws.newRequest() .setParam(PARAM_GATE_ID, valueOf(qualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .executeProtobuf(SearchResponse.class); }
public void associateProjectToQualityGate(ComponentDto component, QualityGateDto qualityGate) { dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto() .setKey("sonar.qualitygate") .setResourceId(component.getId()) .setValue(String.valueOf(qualityGate.getId()))); db.commit(); }
private void associateProjectToQualityGate(ComponentDto project, QualityGateDto qualityGate) { dbClient.propertiesDao().saveProperty(dbSession, new PropertyDto() .setResourceId(project.getId()) .setValue(qualityGate.getId().toString()) .setKey(SONAR_QUALITYGATE_PROPERTY)); db.commit(); }
@Test public void test_deprecated_default_field() { OrganizationDto organization = db.organizations().insert(); QualityGateDto defaultQualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().setDefaultQualityGate(organization, defaultQualityGate); ListWsResponse response = ws.newRequest() .setParam("organization", organization.getKey()) .executeProtobuf(ListWsResponse.class); assertThat(response.getDefault()).isEqualTo(defaultQualityGate.getId()); }
@Test public void associate() { QualityGateDto qgate = db.qualityGates().insertQualityGate(db.getDefaultOrganization()); OrganizationDto org = db.organizations().insert(); underTest.associate(dbSession, Uuids.createFast(), org, qgate); assertThat(underTest.selectByOrganizationAndUuid(dbSession, org, qgate.getUuid())).isNotNull(); assertThat(underTest.selectByOrganizationAndUuid(dbSession, org, qgate.getUuid())) .extracting(QGateWithOrgDto::getId, QGateWithOrgDto::getUuid, QGateWithOrgDto::getOrganizationUuid, QGateWithOrgDto::getName) .containsExactly(qgate.getId(), qgate.getUuid(), org.getUuid(), qgate.getName()); }
@Test public void fail_to_delete_default_quality_gate() { OrganizationDto organization = db.organizations().insert(); QualityGateDto defaultQualityGate = db.qualityGates().createDefaultQualityGate(organization); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The default quality gate cannot be removed"); ws.newRequest() .setParam(PARAM_ID, valueOf(defaultQualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
@Test public void fail_when_name_parameter_is_missing() { OrganizationDto organization = db.organizations().insert(); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); QualityGateDto qualityGate = db.qualityGates().insertQualityGate(organization); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The 'name' parameter is missing"); ws.newRequest() .setParam(PARAM_ID, qualityGate.getId().toString()) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }