@Test public void regular_analysis_of_project_is_enabled_if_delegate_is_absent() { ScannerReport.Metadata metadata = ScannerReport.Metadata.newBuilder() .build(); new BranchLoader(metadataHolder).load(metadata); assertThat(metadataHolder.getBranch()).isNotNull(); Branch branch = metadataHolder.getBranch(); assertThat(branch.isMain()).isTrue(); assertThat(branch.getName()).isEqualTo(BranchDto.DEFAULT_MAIN_BRANCH_NAME); }
@Test public void default_support_of_branches_is_enabled_if_delegate_is_absent() { ScannerReport.Metadata metadata = ScannerReport.Metadata.newBuilder() .setDeprecatedBranch("foo") .build(); new BranchLoader(metadataHolder).load(metadata); assertThat(metadataHolder.getBranch()).isNotNull(); Branch branch = metadataHolder.getBranch(); assertThat(branch.isMain()).isTrue(); assertThat(branch.getName()).isEqualTo("foo"); }
@Test public void execute_fails_with_MessageException_if_projectKey_is_null_in_CE_task() { CeTask res = mock(CeTask.class); Optional<CeTask.Component> component = Optional.of(new CeTask.Component("prj_uuid", null, null)); when(res.getComponent()).thenReturn(component); when(res.getMainComponent()).thenReturn(Optional.of(new CeTask.Component("main_prj_uuid", "main_prj_key", null))); when(res.getOrganizationUuid()).thenReturn(defaultOrganizationProvider.get().getUuid()); reportReader.setMetadata(ScannerReport.Metadata.newBuilder().build()); ComputationStep underTest = createStep(res); expectedException.expect(MessageException.class); expectedException.expectMessage("Compute Engine task component key is null. Project with UUID prj_uuid must have been deleted since report was uploaded. Can not proceed."); underTest.execute(new TestComputationStepContext()); }
@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 should_not_read_hierarchy_if_metadata_available() { when(reader.readMetadata()).thenReturn(ScannerReport.Metadata.newBuilder() .putModulesProjectRelativePathByKey("module1", "path1") .setRootComponentRef(1) .build()); Map<String, String> pathByModuleKey = reportModulesPath.get(); assertThat(pathByModuleKey).containsExactly(entry("module1", "path1")); verify(reader).readMetadata(); verifyNoMoreInteractions(reader); }
@Test public void execute_set_organization_from_ce_task_when_organizationKey_is_not_set_in_report() { reportReader.setMetadata( newBatchReportBuilder() .build()); 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()); }
@Test public void execute_fails_with_ISE_if_component_is_null_in_CE_task() { CeTask res = mock(CeTask.class); when(res.getComponent()).thenReturn(Optional.empty()); when(res.getOrganizationUuid()).thenReturn(defaultOrganizationProvider.get().getUuid()); reportReader.setMetadata(ScannerReport.Metadata.newBuilder().build()); ComputationStep underTest = createStep(res); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("component missing on ce task"); underTest.execute(new TestComputationStepContext()); }
@Test public void set_cross_project_duplication_to_true() { reportReader.setMetadata( newBatchReportBuilder() .setCrossProjectDuplicationActivated(true) .build()); underTest.execute(new TestComputationStepContext()); assertThat(analysisMetadataHolder.isCrossProjectDuplicationEnabled()).isEqualTo(true); }
@Test public void throw_ME_if_both_branch_properties_are_set() { ScannerReport.Metadata metadata = ScannerReport.Metadata.newBuilder() .setDeprecatedBranch("foo") .setBranchName("bar") .build(); expectedException.expect(MessageException.class); expectedException.expectMessage("Properties sonar.branch and sonar.branch.name can't be set together"); new BranchLoader(metadataHolder).load(metadata); }
@Test public void readMetadata_result_is_cached() { ScannerReport.Metadata metadata = ScannerReport.Metadata.newBuilder().build(); writer.writeMetadata(metadata); ScannerReport.Metadata res = underTest.readMetadata(); assertThat(res).isEqualTo(metadata); assertThat(underTest.readMetadata()).isSameAs(res); }
@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); }
@Test public void set_analysis_date() { reportReader.setMetadata( newBatchReportBuilder() .setAnalysisDate(ANALYSIS_DATE) .build()); underTest.execute(new TestComputationStepContext()); assertThat(analysisMetadataHolder.getAnalysisDate()).isEqualTo(ANALYSIS_DATE); }
@Test public void set_root_component_ref() { reportReader.setMetadata( newBatchReportBuilder() .setRootComponentRef(1) .build()); underTest.execute(new TestComputationStepContext()); assertThat(analysisMetadataHolder.getRootComponentRef()).isEqualTo(1); }
@Test public void default_support_of_branches_is_enabled_if_delegate_is_present() { ScannerReport.Metadata metadata = ScannerReport.Metadata.newBuilder() .setDeprecatedBranch("foo") .build(); FakeDelegate delegate = new FakeDelegate(); new BranchLoader(metadataHolder, delegate).load(metadata); assertThat(metadataHolder.getBranch()).isNotNull(); Branch branch = metadataHolder.getBranch(); assertThat(branch.isMain()).isTrue(); assertThat(branch.getName()).isEqualTo("foo"); }
@Test public void execute_fails_with_MessageException_if_main_projectKey_is_null_in_CE_task() { CeTask res = mock(CeTask.class); Optional<CeTask.Component> component = Optional.of(new CeTask.Component("main_prj_uuid", null, null)); when(res.getComponent()).thenReturn(component); when(res.getMainComponent()).thenReturn(component); when(res.getOrganizationUuid()).thenReturn(defaultOrganizationProvider.get().getUuid()); reportReader.setMetadata(ScannerReport.Metadata.newBuilder().build()); ComputationStep underTest = createStep(res); expectedException.expect(MessageException.class); expectedException.expectMessage("Compute Engine task main component key is null. Project with UUID main_prj_uuid must have been deleted since report was uploaded. Can not proceed."); underTest.execute(new TestComputationStepContext()); }
@Test public void set_project_from_dto() { reportReader.setMetadata( newBatchReportBuilder() .setRootComponentRef(1) .build()); underTest.execute(new TestComputationStepContext()); Project project = analysisMetadataHolder.getProject(); assertThat(project.getUuid()).isEqualTo(this.project.uuid()); assertThat(project.getKey()).isEqualTo(this.project.getDbKey()); assertThat(project.getName()).isEqualTo(this.project.name()); assertThat(project.getDescription()).isEqualTo(this.project.description()); }
@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()); }
@Test public void execute_fails_with_MessageException_when_report_has_no_organizationKey_but_does_not_belong_to_the_default_organization() { reportReader.setMetadata( newBatchReportBuilder() .build()); OrganizationDto nonDefaultOrganizationDto = db.organizations().insert(); ComputationStep underTest = createStep(createCeTask(PROJECT_KEY, nonDefaultOrganizationDto.getUuid())); expectedException.expect(MessageException.class); expectedException.expectMessage("Report does not specify an OrganizationKey but it has been submitted to another organization (" + nonDefaultOrganizationDto.getKey() + ") than the default one (" + db.getDefaultOrganization().getKey() + ")"); underTest.execute(new TestComputationStepContext()); }
@Test public void set_cross_project_duplication_to_false() { reportReader.setMetadata( newBatchReportBuilder() .setCrossProjectDuplicationActivated(false) .build()); underTest.execute(new TestComputationStepContext()); assertThat(analysisMetadataHolder.isCrossProjectDuplicationEnabled()).isEqualTo(false); }
@Test public void set_cross_project_duplication_to_false_when_nothing_in_the_report() { reportReader.setMetadata( newBatchReportBuilder() .build()); underTest.execute(new TestComputationStepContext()); assertThat(analysisMetadataHolder.isCrossProjectDuplicationEnabled()).isEqualTo(false); }