@Test public void read_metadata() { ScannerReportWriter writer = new ScannerReportWriter(dir); ScannerReport.Metadata.Builder metadata = ScannerReport.Metadata.newBuilder() .setAnalysisDate(15000000L) .setProjectKey("PROJECT_A") .setRootComponentRef(1) .setCrossProjectDuplicationActivated(true); writer.writeMetadata(metadata.build()); ScannerReport.Metadata readMetadata = underTest.readMetadata(); assertThat(readMetadata.getAnalysisDate()).isEqualTo(15000000L); assertThat(readMetadata.getProjectKey()).isEqualTo("PROJECT_A"); assertThat(readMetadata.getRootComponentRef()).isEqualTo(1); assertThat(readMetadata.getCrossProjectDuplicationActivated()).isTrue(); }
@Test public void write_metadata() { ScannerReport.Metadata.Builder metadata = ScannerReport.Metadata.newBuilder() .setAnalysisDate(15000000L) .setProjectKey("PROJECT_A") .setRootComponentRef(1); underTest.writeMetadata(metadata.build()); ScannerReport.Metadata read = Protobuf.read(underTest.getFileStructure().metadataFile(), ScannerReport.Metadata.parser()); assertThat(read.getAnalysisDate()).isEqualTo(15000000L); assertThat(read.getProjectKey()).isEqualTo("PROJECT_A"); assertThat(read.getRootComponentRef()).isEqualTo(1); }
.setAnalysisDate(projectAnalysisInfo.analysisDate().getTime()) .setProjectKey(rootProject.key()) .setCrossProjectDuplicationActivated(cpdSettings.isCrossProjectDuplicationEnabled()) .setRootComponentRef(rootProject.scannerId());
.setAnalysisDate(projectAnalysisInfo.analysisDate().getTime()) .setProjectKey(rootProject.key()) .setCrossProjectDuplicationActivated(cpdSettings.isCrossProjectDuplicationEnabled()) .setRootComponentRef(rootProject.scannerId());
@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 @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_sets_branch_even_if_MessageException_is_thrown_because_projectKey_in_report_is_different_from_componentKey_in_CE_task() { OrganizationDto organization = db.organizations().insert(); ComponentDto otherProject = db.components().insertPublicProject(organization); reportReader.setMetadata( ScannerReport.Metadata.newBuilder() .setProjectKey(otherProject.getDbKey()) .build()); try { underTest.execute(new TestComputationStepContext()); } catch (MessageException e) { assertThat(analysisMetadataHolder.getBranch()).isNotNull(); } }
@Test public void execute_sets_analysis_date_even_if_MessageException_is_thrown_because_projectKey_is_different_from_componentKey_in_CE_task() { OrganizationDto organization = db.organizations().insert(); ComponentDto otherProject = db.components().insertPublicProject(organization); reportReader.setMetadata( ScannerReport.Metadata.newBuilder() .setProjectKey(otherProject.getDbKey()) .setAnalysisDate(ANALYSIS_DATE) .build()); try { underTest.execute(new TestComputationStepContext()); } catch (MessageException e) { assertThat(analysisMetadataHolder.getAnalysisDate()).isEqualTo(ANALYSIS_DATE); } }
@Test public void execute_fails_with_MessageException_when_projectKey_in_report_is_different_from_componentKey_in_CE_task() { OrganizationDto organization = db.organizations().insert(); ComponentDto otherProject = db.components().insertPublicProject(organization); reportReader.setMetadata( ScannerReport.Metadata.newBuilder() .setProjectKey(otherProject.getDbKey()) .build()); expectedException.expect(MessageException.class); expectedException .expectMessage("ProjectKey in report (" + otherProject.getDbKey() + ") is not consistent with projectKey under which the report has been submitted (" + PROJECT_KEY + ")"); underTest.execute(new TestComputationStepContext()); }
private static ScannerReport.Metadata.Builder newBatchReportBuilder() { return ScannerReport.Metadata.newBuilder() .setProjectKey(PROJECT_KEY); }
@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()); }