@Test public void set_data_check_maximal_length() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Value is too long for issue attributes:"); StringBuilder s = new StringBuilder(4500); for (int i = 0; i < 4500; i++) { s.append('a'); } new IssueDto().setIssueAttributes(s.toString()); }
@Test public void should_sort_by_status() { IssueDto issue1 = new IssueDto().setId(1L).setStatus("CLOSED"); IssueDto issue2 = new IssueDto().setId(2L).setStatus("REOPENED"); IssueDto issue3 = new IssueDto().setId(3L).setStatus("OPEN"); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_STATUS).asc(false).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getStatus()).isEqualTo("REOPENED"); assertThat(result.get(1).getStatus()).isEqualTo("OPEN"); assertThat(result.get(2).getStatus()).isEqualTo("CLOSED"); }
@Test public void should_sort_by_severity() { IssueDto issue1 = new IssueDto().setId(1L).setSeverity("INFO"); IssueDto issue2 = new IssueDto().setId(2L).setSeverity("BLOCKER"); IssueDto issue3 = new IssueDto().setId(3L).setSeverity("MAJOR"); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_SEVERITY).asc(true).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getSeverity()).isEqualTo("INFO"); assertThat(result.get(1).getSeverity()).isEqualTo("MAJOR"); assertThat(result.get(2).getSeverity()).isEqualTo("BLOCKER"); }
@Test public void should_sort_by_desc_severity() { IssueDto issue1 = new IssueDto().setId(1L).setSeverity("INFO"); IssueDto issue2 = new IssueDto().setId(2L).setSeverity("BLOCKER"); IssueDto issue3 = new IssueDto().setId(3L).setSeverity("MAJOR"); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_SEVERITY).asc(false).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getSeverity()).isEqualTo("BLOCKER"); assertThat(result.get(1).getSeverity()).isEqualTo("MAJOR"); assertThat(result.get(2).getSeverity()).isEqualTo("INFO"); }
@Test public void should_not_sort_with_null_sort() { IssueDto issue1 = new IssueDto().setId(1L).setAssigneeUuid("perceval"); IssueDto issue2 = new IssueDto().setId(2L).setAssigneeUuid("arthur"); IssueDto issue3 = new IssueDto().setId(3L).setAssigneeUuid("vincent"); IssueDto issue4 = new IssueDto().setId(4L).setAssigneeUuid(null); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3, issue4); IssueQuery query = IssueQuery.builder().sort(null).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(4); assertThat(result.get(0).getAssigneeUuid()).isEqualTo("perceval"); assertThat(result.get(1).getAssigneeUuid()).isEqualTo("arthur"); assertThat(result.get(2).getAssigneeUuid()).isEqualTo("vincent"); assertThat(result.get(3).getAssigneeUuid()).isNull(); }
@Test public void set_rule() { IssueDto dto = new IssueDto() .setKee("100") .setRule(new RuleDefinitionDto().setId(1).setRuleKey("AvoidCycle").setRepositoryKey("squid").setIsExternal(true)) .setLanguage("xoo"); assertThat(dto.getRuleId()).isEqualTo(1); assertThat(dto.getRuleRepo()).isEqualTo("squid"); assertThat(dto.getRule()).isEqualTo("AvoidCycle"); assertThat(dto.getRuleKey().toString()).isEqualTo("squid:AvoidCycle"); assertThat(dto.getLanguage()).isEqualTo("xoo"); assertThat(dto.isExternal()).isEqualTo(true); }
@Test public void should_sort_by_update_date() { Date date = new Date(); Date date1 = DateUtils.addDays(date, -3); Date date2 = DateUtils.addDays(date, -2); Date date3 = DateUtils.addDays(date, -1); IssueDto issue1 = new IssueDto().setId(1L).setIssueUpdateDate(date1); IssueDto issue2 = new IssueDto().setId(2L).setIssueUpdateDate(date3); IssueDto issue3 = new IssueDto().setId(3L).setIssueUpdateDate(date2); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_UPDATE_DATE).asc(false).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getIssueUpdateDate()).isEqualTo(date3); assertThat(result.get(1).getIssueUpdateDate()).isEqualTo(date2); assertThat(result.get(2).getIssueUpdateDate()).isEqualTo(date1); }
@Test public void should_sort_by_close_date() { Date date = new Date(); Date date1 = DateUtils.addDays(date, -3); Date date2 = DateUtils.addDays(date, -2); Date date3 = DateUtils.addDays(date, -1); IssueDto issue1 = new IssueDto().setId(1L).setIssueCloseDate(date1); IssueDto issue2 = new IssueDto().setId(2L).setIssueCloseDate(date3); IssueDto issue3 = new IssueDto().setId(3L).setIssueCloseDate(date2); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CLOSE_DATE).asc(false).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getIssueCloseDate()).isEqualTo(date3); assertThat(result.get(1).getIssueCloseDate()).isEqualTo(date2); assertThat(result.get(2).getIssueCloseDate()).isEqualTo(date1); }
@Test public void should_sort_by_creation_date() { Date date = new Date(); Date date1 = DateUtils.addDays(date, -3); Date date2 = DateUtils.addDays(date, -2); Date date3 = DateUtils.addDays(date, -1); IssueDto issue1 = new IssueDto().setId(1L).setIssueCreationDate(date1); IssueDto issue2 = new IssueDto().setId(2L).setIssueCreationDate(date3); IssueDto issue3 = new IssueDto().setId(3L).setIssueCreationDate(date2); List<IssueDto> dtoList = newArrayList(issue1, issue2, issue3); IssueQuery query = IssueQuery.builder().sort(IssueQuery.SORT_BY_CREATION_DATE).asc(false).build(); IssuesFinderSort issuesFinderSort = new IssuesFinderSort(dtoList, query); List<IssueDto> result = newArrayList(issuesFinderSort.sort()); assertThat(result).hasSize(3); assertThat(result.get(0).getIssueCreationDate()).isEqualTo(date3); assertThat(result.get(1).getIssueCreationDate()).isEqualTo(date2); assertThat(result.get(2).getIssueCreationDate()).isEqualTo(date1); }
@Test public void set_tags() { IssueDto dto = new IssueDto(); assertThat(dto.getTags()).isEmpty(); assertThat(dto.getTagsString()).isNull(); dto.setTags(Arrays.asList("tag1", "tag2", "tag3")); assertThat(dto.getTags()).containsOnly("tag1", "tag2", "tag3"); assertThat(dto.getTagsString()).isEqualTo("tag1,tag2,tag3"); dto.setTags(Arrays.asList()); assertThat(dto.getTags()).isEmpty(); dto.setTagsString("tag1, tag2 ,,tag3"); assertThat(dto.getTags()).containsOnly("tag1", "tag2", "tag3"); dto.setTagsString(null); assertThat(dto.getTags()).isEmpty(); dto.setTagsString(""); assertThat(dto.getTags()).isEmpty(); } }
@SafeVarargs private final IssueDto insertNewClosedIssue(ComponentDto component, RuleDefinitionDto rule, long issueCloseTime, Consumer<IssueDto>... consumers) { IssueDto res = new IssueDto() .setKee(UuidFactoryFast.getInstance().create()) .setRuleId(rule.getId()) .setType(rule.getType()) .setComponentUuid(component.uuid()) .setProjectUuid(component.projectUuid()) .setStatus(Issue.STATUS_CLOSED) .setIssueCloseTime(issueCloseTime); Arrays.asList(consumers).forEach(c -> c.accept(res)); underTest.insert(res); dbSession.commit(); return res; }
Date closedAt = DateUtils.addDays(new Date(), -1); IssueDto dto = new IssueDto() .setKee("100") .setType(RuleType.VULNERABILITY)
@Test public void should_reload_issue_and_resolve_conflict() { DefaultIssue issue = new DefaultIssue() .setKey("ABCDE") .setType(CODE_SMELL) .setRuleKey(RuleKey.of("squid", "AvoidCycles")) .setProjectUuid("U1") .setComponentUuid("U2") .setNew(false) .setStatus(STATUS_OPEN); // Issue as seen and changed by end-user IssueMapper mapper = mock(IssueMapper.class); IssueDto issueDto = new IssueDto() .setKee("ABCDE") .setType(CODE_SMELL) .setRuleId(10) .setRuleKey("squid", "AvoidCycles") .setProjectUuid("U1") .setComponentUuid("U2") .setLine(10) .setStatus(STATUS_OPEN) // field changed by user .setAssigneeUuid("arthur-uuid"); new UpdateConflictResolver().resolve(issue, issueDto, mapper); ArgumentCaptor<IssueDto> argument = ArgumentCaptor.forClass(IssueDto.class); verify(mapper).update(argument.capture()); IssueDto updatedIssue = argument.getValue(); assertThat(updatedIssue.getKee()).isEqualTo("ABCDE"); assertThat(updatedIssue.getAssigneeUuid()).isEqualTo("arthur-uuid"); }
@Test public void severity_changed_by_user_should_be_kept() { DefaultIssue issue = new DefaultIssue() .setKey("ABCDE") .setRuleKey(RuleKey.of("squid", "AvoidCycles")) .setComponentKey("struts:org.apache.struts.Action") .setNew(false) .setStatus(STATUS_OPEN); // Changed by scan issue.setSeverity(Severity.BLOCKER); issue.setManualSeverity(false); // Issue as seen and changed by end-user IssueDto dbIssue = new IssueDto() .setKee("ABCDE") .setStatus(STATUS_OPEN) .setSeverity(Severity.INFO) .setManualSeverity(true); new UpdateConflictResolver().mergeFields(dbIssue, issue); assertThat(issue.severity()).isEqualTo(Severity.INFO); assertThat(issue.manualSeverity()).isTrue(); } }
@Test public void commitAndIndexIssues_removes_issue_from_index_if_it_does_not_exist_in_db() { IssueDto issue1 = new IssueDto().setKee("I1").setProjectUuid("P1"); addIssueToIndex(issue1.getProjectUuid(), issue1.getKey()); IssueDto issue2 = db.issues().insertIssue(organization); underTest.commitAndIndexIssues(db.getSession(), asList(issue1, issue2)); // issue1 is removed from index, issue2 is persisted and indexed assertThatIndexHasOnly(issue2); assertThatDbHasOnly(issue2); assertThatEsQueueTableHasSize(0); }
IssueDto dbIssue = new IssueDto() .setKee("ABCDE") .setRuleId(10)
public static IssueDto toDtoForUpdate(DefaultIssue issue, long now) { return new IssueDto() .setKee(issue.key()) .setType(issue.type())
return new IssueDto() .setKee(issue.key()) .setType(issue.type())
public static IssueDto createFor(Project project, RuleDto rule) { return new IssueDto() .setProjectUuid(project.getUuid()) .setRuleId(rule.getId()) .setKee(Uuids.create()); }
public static IssueDto toDtoForUpdate(DefaultIssue issue, long now) { return new IssueDto() .setKee(issue.key()) .setType(issue.type())