@Test public void ws_response_with_updated_name() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); EventDto originalEvent = db.events().insertEvent(newEvent(analysis).setUuid("E1").setName("Original Name")); ProjectAnalyses.Event result = call("E1", "name").getEvent(); assertThat(result.getName()).isEqualTo("name"); assertThat(result.hasDescription()).isFalse(); assertThat(result.getCategory()).isEqualTo(OTHER.name()); assertThat(result.getAnalysis()).isEqualTo(originalEvent.getAnalysisUuid()); assertThat(result.getKey()).isEqualTo("E1"); }
SnapshotDto projectAnalysis1 = db.components().insertSnapshot(project); SnapshotDto projectAnalysis2 = db.components().insertSnapshot(project); EventDto projectEvent1 = db.events().insertEvent(projectAnalysis1); EventDto projectEvent2 = db.events().insertEvent(projectAnalysis2); EventDto projectEvent3 = db.events().insertEvent(db.components().insertSnapshot(project)); SnapshotDto branchAnalysis1 = db.components().insertSnapshot(branch); SnapshotDto branchAnalysis2 = db.components().insertSnapshot(branch); EventDto branchEvent1 = db.events().insertEvent(branchAnalysis1); EventDto branchEvent2 = db.events().insertEvent(branchAnalysis2); SnapshotDto anotherBranchAnalysis = db.components().insertSnapshot(anotherBranch); EventDto anotherBranchEvent = db.events().insertEvent(anotherBranchAnalysis); SnapshotDto anotherProjectAnalysis = db.components().insertSnapshot(anotherProject); EventDto anotherProjectEvent = db.events().insertEvent(anotherProjectAnalysis); ComponentDto referencedProjectA = db.components().insertPublicProject(); ComponentDto referencedProjectB = db.components().insertPublicProject(); db.events().insertEventComponentChanges(projectEvent1, projectAnalysis1, randomChangeCategory(), referencedProjectA, null); db.events().insertEventComponentChanges(projectEvent1, projectAnalysis1, randomChangeCategory(), referencedProjectB, null); BranchDto branchProjectA = newBranchDto(referencedProjectA); ComponentDto cptBranchProjectA = ComponentTesting.newProjectBranch(referencedProjectA, branchProjectA); db.events().insertEventComponentChanges(projectEvent2, projectAnalysis2, randomChangeCategory(), cptBranchProjectA, branchProjectA); db.events().insertEventComponentChanges(branchEvent1, branchAnalysis1, randomChangeCategory(), referencedProjectB, null); db.events().insertEventComponentChanges(branchEvent2, branchAnalysis2, randomChangeCategory(), cptBranchProjectA, branchProjectA); db.events().insertEventComponentChanges(anotherBranchEvent, anotherBranchAnalysis, randomChangeCategory(), referencedProjectB, null); db.events().insertEventComponentChanges(anotherProjectEvent, anotherProjectAnalysis, randomChangeCategory(), referencedProjectB, null);
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); }
SnapshotDto projectAnalysis3 = db.components().insertSnapshot(project); SnapshotDto projectAnalysis4 = db.components().insertSnapshot(project); EventDto projectEvent1 = db.events().insertEvent(projectAnalysis1); EventDto projectEvent2 = db.events().insertEvent(projectAnalysis2); EventDto projectEvent3 = db.events().insertEvent(projectAnalysis3); db.events().insertEventComponentChanges(projectEvent1, projectAnalysis1, randomChangeCategory(), referencedProjectA, null); db.events().insertEventComponentChanges(projectEvent1, projectAnalysis1, randomChangeCategory(), referencedProjectB, null); BranchDto branchProjectA = newBranchDto(referencedProjectA); ComponentDto cptBranchProjectA = ComponentTesting.newProjectBranch(referencedProjectA, branchProjectA); db.events().insertEventComponentChanges(projectEvent2, projectAnalysis2, randomChangeCategory(), cptBranchProjectA, branchProjectA);
@Test public void update_name_in_db() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); EventDto originalEvent = db.events().insertEvent(newEvent(analysis).setUuid("E1").setName("Original Name")); call("E1", "name"); EventDto newEvent = dbClient.eventDao().selectByUuid(dbSession, "E1").get(); assertThat(newEvent.getName()).isEqualTo("name"); assertThat(newEvent.getDescription()).isNull(); assertThat(newEvent.getCategory()).isEqualTo(originalEvent.getCategory()); assertThat(newEvent.getDate()).isEqualTo(originalEvent.getDate()); assertThat(newEvent.getCreatedAt()).isEqualTo(originalEvent.getCreatedAt()); }
@Test public void select_by_uuid() { SnapshotDto analysis = dbTester.components().insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert())); dbTester.events().insertEvent(newEvent(analysis).setUuid("A1")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A2")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A3")); Optional<EventDto> result = underTest.selectByUuid(dbSession, "A2"); assertThat(result).isPresent(); assertThat(result.get().getUuid()).isEqualTo("A2"); }
@Test public void update_name_only_in_db() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); EventDto originalEvent = db.events().insertEvent(newEvent(analysis).setUuid("E1").setName("Original Name").setDescription("Original Description")); call("E1", "name"); EventDto newEvent = dbClient.eventDao().selectByUuid(dbSession, "E1").get(); assertThat(newEvent.getName()).isEqualTo("name"); assertThat(newEvent.getDescription()).isEqualTo(originalEvent.getDescription()); }
@Test public void update_name_and_description() { SnapshotDto analysis = dbTester.components().insertProjectAndSnapshot(ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert())); dbTester.events().insertEvent(newEvent(analysis).setUuid("E1")); underTest.update(dbSession, "E1", "New Name", "New Description"); EventDto result = dbClient.eventDao().selectByUuid(dbSession, "E1").get(); assertThat(result.getName()).isEqualTo("New Name"); assertThat(result.getDescription()).isEqualTo("New Description"); }
@Test public void select_by_analysis_uuid() { ComponentDto project = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization()); SnapshotDto analysis = dbTester.components().insertProjectAndSnapshot(project); SnapshotDto otherAnalysis = dbClient.snapshotDao().insert(dbSession, newAnalysis(project)); dbTester.commit(); dbTester.events().insertEvent(newEvent(analysis).setUuid("A1")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O1")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A2")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O2")); dbTester.events().insertEvent(newEvent(analysis).setUuid("A3")); dbTester.events().insertEvent(newEvent(otherAnalysis).setUuid("O3")); List<EventDto> result = underTest.selectByAnalysisUuid(dbSession, analysis.getUuid()); assertThat(result).hasSize(3); assertThat(result).extracting(EventDto::getUuid).containsOnly("A1", "A2", "A3"); }
@Test public void update_OTHER_event_does_not_update_analysis_version() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1").setCategory(OTHER.getLabel())); call("E1", "6.3"); SnapshotDto updatedAnalysis = dbClient.snapshotDao().selectByUuid(dbSession, analysis.getUuid()).get(); assertThat(updatedAnalysis.getVersion()).isEqualTo("5.6"); }
@Test public void update_VERSION_event_update_analysis_version() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1").setCategory(VERSION.getLabel())); call("E1", "6.3"); SnapshotDto updatedAnalysis = dbClient.snapshotDao().selectByUuid(dbSession, analysis.getUuid()).get(); assertThat(updatedAnalysis.getVersion()).isEqualTo("6.3"); }
@Test public void limit_version_name_length_to_100_for_analysis_events() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1").setCategory(OTHER.getLabel()).setName("E1 name")); db.events().insertEvent(newEvent(analysis).setUuid("E2").setCategory(VERSION.getLabel()).setName("E2 name")); call("E1", repeat("a", 100)); call("E1", repeat("a", 101)); call("E2", repeat("a", 100)); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Version length (101) is longer than the maximum authorized (100). 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' was provided"); call("E2", repeat("a", 101)); }
@Test public void select_by_analysis_uuids() { ComponentDto project = dbTester.components().insertPrivateProject(); SnapshotDto a1 = dbTester.components().insertSnapshot(newAnalysis(project)); SnapshotDto a2 = dbTester.components().insertSnapshot(newAnalysis(project)); SnapshotDto a42 = dbTester.components().insertSnapshot(newAnalysis(project)); dbTester.events().insertEvent(newEvent(newAnalysis(project))); dbTester.events().insertEvent(newEvent(a1).setUuid("A11")); dbTester.events().insertEvent(newEvent(a1).setUuid("A12")); dbTester.events().insertEvent(newEvent(a1).setUuid("A13")); dbTester.events().insertEvent(newEvent(a2).setUuid("A21")); dbTester.events().insertEvent(newEvent(a2).setUuid("A22")); dbTester.events().insertEvent(newEvent(a2).setUuid("A23")); dbTester.events().insertEvent(newEvent(a42).setUuid("AO1")); dbTester.events().insertEvent(newEvent(a42).setUuid("AO2")); dbTester.events().insertEvent(newEvent(a42).setUuid("AO3")); List<EventDto> result = underTest.selectByAnalysisUuids(dbSession, newArrayList(a1.getUuid(), a2.getUuid())); assertThat(result).hasSize(6); assertThat(result).extracting(EventDto::getUuid).containsOnly("A11", "A12", "A13", "A21", "A22", "A23"); }
@Test public void delete_by_uuid() { dbTester.events().insertEvent(newEvent(newAnalysis(ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization()))).setUuid("E1")); underTest.delete(dbTester.getSession(), "E1"); dbTester.commit(); assertThat(dbTester.countRowsOfTable("events")).isEqualTo(0); }
@Test public void fail_if_no_name() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The 'name' parameter is missing"); call("E1", null); }
@Test public void fail_if_blank_name() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("A non empty name is required"); call("E1", " "); }
@Test public void feed_period_by_previous_version_with_first_analysis_when_previous_snapshot_is_the_last_one() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization); SnapshotDto analysis = dbTester.components().insertSnapshot(project, snapshot -> snapshot.setCreatedAt(1226379600000L).setVersion("0.9").setLast(true)); // 2008-11-11 dbTester.events().insertEvent(newEvent(analysis).setName("0.9").setCategory(CATEGORY_VERSION)); when(system2Mock.now()).thenReturn(november30th2008.getTime()); when(analysisMetadataHolder.isFirstAnalysis()).thenReturn(false); setupRoot(project, "1.1"); settings.setProperty("sonar.leak.period", "previous_version"); underTest.execute(new TestComputationStepContext()); assertPeriod(LEAK_PERIOD_MODE_PREVIOUS_VERSION, null, analysis.getCreatedAt(), analysis.getUuid()); verifyDebugLogs("Resolving first analysis as new code period as there is only one existing version"); }
@Test public void fail_if_other_event_with_same_name_on_same_analysis() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1").setCategory(OTHER.getLabel()).setName("E1 name")); db.events().insertEvent(newEvent(analysis).setUuid("E2").setCategory(OTHER.getLabel()).setName("E2 name")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("An 'Other' event with the same name already exists on analysis '" + analysis.getUuid() + "'"); call("E2", "E1 name"); }
@Test public void delete_event() { ComponentDto project = ComponentTesting.newPrivateProjectDto(db.organizations().insert()); SnapshotDto analysis = db.components().insertProjectAndSnapshot(project); db.events().insertEvent(newEvent(analysis).setUuid("E1")); db.events().insertEvent(newEvent(analysis).setUuid("E2")); logInAsProjectAdministrator(project); call("E2"); List<EventDto> events = db.getDbClient().eventDao().selectByAnalysisUuid(db.getSession(), analysis.getUuid()); assertThat(events).extracting(EventDto::getUuid).containsExactly("E1"); }
@Test public void fail_if_category_other_than_other_or_version() { SnapshotDto analysis = createAnalysisAndLogInAsProjectAdministrator("5.6"); db.events().insertEvent(newEvent(analysis).setUuid("E1").setCategory("Profile")); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Event of category 'QUALITY_PROFILE' cannot be modified. Authorized categories: VERSION, OTHER"); call("E1", "name"); }