@Test @UseDataProvider("organizationEnabledFlags") public void execute_set_organization_from_ce_task_when_organizationKey_is_set_in_report(boolean organizationEnabled) { reportReader.setMetadata( newBatchReportBuilder() .setOrganizationKey(db.getDefaultOrganization().getKey()) .build()); when(organizationFlags.isEnabled(any())).thenReturn(organizationEnabled); underTest.execute(new TestComputationStepContext()); Organization organization = analysisMetadataHolder.getOrganization(); OrganizationDto defaultOrganization = db.getDefaultOrganization(); assertThat(organization.getUuid()).isEqualTo(defaultOrganization.getUuid()); assertThat(organization.getKey()).isEqualTo(defaultOrganization.getKey()); assertThat(organization.getName()).isEqualTo(defaultOrganization.getName()); assertThat(analysisMetadataHolder.isOrganizationsEnabled()).isEqualTo(organizationEnabled); }
@Test @UseDataProvider("organizationEnabledFlags") public void execute_set_non_default_organization_from_ce_task(boolean organizationEnabled) { OrganizationDto nonDefaultOrganizationDto = db.organizations().insert(); ComponentDto project = db.components().insertPublicProject(nonDefaultOrganizationDto); reportReader.setMetadata( newBatchReportBuilder() .setOrganizationKey(nonDefaultOrganizationDto.getKey()) .setProjectKey(project.getDbKey()) .build()); when(organizationFlags.isEnabled(any())).thenReturn(organizationEnabled); ComputationStep underTest = createStep(createCeTask(project.getDbKey(), nonDefaultOrganizationDto.getUuid())); underTest.execute(new TestComputationStepContext()); Organization organization = analysisMetadataHolder.getOrganization(); assertThat(organization.getUuid()).isEqualTo(nonDefaultOrganizationDto.getUuid()); assertThat(organization.getKey()).isEqualTo(nonDefaultOrganizationDto.getKey()); assertThat(organization.getName()).isEqualTo(nonDefaultOrganizationDto.getName()); assertThat(analysisMetadataHolder.isOrganizationsEnabled()).isEqualTo(organizationEnabled); }
@Test public void execute_ensures_that_report_has_quality_profiles_matching_the_project_organization() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPublicProject(organization); ScannerReport.Metadata.Builder metadataBuilder = newBatchReportBuilder(); metadataBuilder .setOrganizationKey(organization.getKey()) .setProjectKey(project.getDbKey()); metadataBuilder.getMutableQprofilesPerLanguage().put("js", ScannerReport.Metadata.QProfile.newBuilder().setKey("p1").setName("Sonar way").setLanguage("js").build()); reportReader.setMetadata(metadataBuilder.build()); db.qualityProfiles().insert(organization, p -> p.setLanguage("js").setKee("p1")); ComputationStep underTest = createStep(createCeTask(project.getDbKey(), organization.getUuid())); // no errors underTest.execute(new TestComputationStepContext()); }
@Test public void execute_fails_with_MessageException_when_report_has_quality_profiles_on_other_organizations() { OrganizationDto organization1 = db.organizations().insert(); OrganizationDto organization2 = db.organizations().insert(); ComponentDto projectInOrg1 = db.components().insertPublicProject(organization1); ScannerReport.Metadata.Builder metadataBuilder = newBatchReportBuilder(); metadataBuilder .setOrganizationKey(organization1.getKey()) .setProjectKey(projectInOrg1.getDbKey()); metadataBuilder.putQprofilesPerLanguage("js", ScannerReport.Metadata.QProfile.newBuilder().setKey("jsInOrg1").setName("Sonar way").setLanguage("js").build()); metadataBuilder.putQprofilesPerLanguage("php", ScannerReport.Metadata.QProfile.newBuilder().setKey("phpInOrg2").setName("PHP way").setLanguage("php").build()); reportReader.setMetadata(metadataBuilder.build()); db.qualityProfiles().insert(organization1, p -> p.setLanguage("js").setKee("jsInOrg1")); db.qualityProfiles().insert(organization2, p -> p.setLanguage("php").setKee("phpInOrg2")); ComputationStep underTest = createStep(createCeTask(projectInOrg1.getDbKey(), organization1.getUuid())); expectedException.expect(MessageException.class); expectedException.expectMessage("Quality profiles with following keys don't exist in organization [" + organization1.getKey() + "]: phpInOrg2"); underTest.execute(new TestComputationStepContext()); }
@Test public void execute_does_not_fail_when_report_has_a_quality_profile_that_does_not_exist_anymore() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPublicProject(organization); ScannerReport.Metadata.Builder metadataBuilder = newBatchReportBuilder(); metadataBuilder .setOrganizationKey(organization.getKey()) .setProjectKey(project.getDbKey()); metadataBuilder.putQprofilesPerLanguage("js", ScannerReport.Metadata.QProfile.newBuilder().setKey("p1").setName("Sonar way").setLanguage("js").build()); reportReader.setMetadata(metadataBuilder.build()); ComputationStep underTest = createStep(createCeTask(project.getDbKey(), organization.getUuid())); underTest.execute(new TestComputationStepContext()); }