You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IssueDtoTest.java 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2020 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.db.issue;
  21. import java.util.Arrays;
  22. import java.util.Calendar;
  23. import java.util.Date;
  24. import org.apache.commons.lang.time.DateUtils;
  25. import org.junit.Rule;
  26. import org.junit.Test;
  27. import org.junit.rules.ExpectedException;
  28. import org.sonar.api.issue.Issue;
  29. import org.sonar.api.rules.RuleType;
  30. import org.sonar.api.utils.Duration;
  31. import org.sonar.core.issue.DefaultIssue;
  32. import org.sonar.db.rule.RuleDefinitionDto;
  33. import static org.assertj.core.api.Assertions.assertThat;
  34. public class IssueDtoTest {
  35. @Rule
  36. public ExpectedException expectedException = ExpectedException.none();
  37. @Test
  38. public void set_data_check_maximal_length() {
  39. expectedException.expect(IllegalArgumentException.class);
  40. expectedException.expectMessage("Value is too long for issue attributes:");
  41. StringBuilder s = new StringBuilder(4500);
  42. for (int i = 0; i < 4500; i++) {
  43. s.append('a');
  44. }
  45. new IssueDto().setIssueAttributes(s.toString());
  46. }
  47. @Test
  48. public void set_issue_fields() {
  49. Date createdAt = DateUtils.addDays(new Date(), -5);
  50. Date updatedAt = DateUtils.addDays(new Date(), -3);
  51. Date closedAt = DateUtils.addDays(new Date(), -1);
  52. IssueDto dto = new IssueDto()
  53. .setKee("100")
  54. .setType(RuleType.VULNERABILITY)
  55. .setRuleUuid("rule-uuid-1")
  56. .setRuleKey("squid", "AvoidCycle")
  57. .setLanguage("xoo")
  58. .setComponentKey("org.sonar.sample:Sample")
  59. .setComponentUuid("CDEF")
  60. .setProjectUuid("GHIJ")
  61. .setModuleUuid("BCDE")
  62. .setModuleUuidPath("ABCD.BCDE.")
  63. .setProjectKey("org.sonar.sample")
  64. .setStatus(Issue.STATUS_CLOSED)
  65. .setResolution(Issue.RESOLUTION_FALSE_POSITIVE)
  66. .setGap(15.0)
  67. .setEffort(10L)
  68. .setLine(6)
  69. .setSeverity("BLOCKER")
  70. .setMessage("message")
  71. .setManualSeverity(true)
  72. .setAssigneeUuid("perceval")
  73. .setIssueAttributes("key=value")
  74. .setAuthorLogin("pierre")
  75. .setIssueCreationDate(createdAt)
  76. .setIssueUpdateDate(updatedAt)
  77. .setIssueCloseDate(closedAt);
  78. DefaultIssue issue = dto.toDefaultIssue();
  79. assertThat(issue.key()).isEqualTo("100");
  80. assertThat(issue.type()).isEqualTo(RuleType.VULNERABILITY);
  81. assertThat(issue.ruleKey().toString()).isEqualTo("squid:AvoidCycle");
  82. assertThat(issue.language()).isEqualTo("xoo");
  83. assertThat(issue.componentUuid()).isEqualTo("CDEF");
  84. assertThat(issue.projectUuid()).isEqualTo("GHIJ");
  85. assertThat(issue.componentKey()).isEqualTo("org.sonar.sample:Sample");
  86. assertThat(issue.moduleUuid()).isEqualTo("BCDE");
  87. assertThat(issue.moduleUuidPath()).isEqualTo("ABCD.BCDE.");
  88. assertThat(issue.projectKey()).isEqualTo("org.sonar.sample");
  89. assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED);
  90. assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FALSE_POSITIVE);
  91. assertThat(issue.gap()).isEqualTo(15.0);
  92. assertThat(issue.effort()).isEqualTo(Duration.create(10L));
  93. assertThat(issue.line()).isEqualTo(6);
  94. assertThat(issue.severity()).isEqualTo("BLOCKER");
  95. assertThat(issue.message()).isEqualTo("message");
  96. assertThat(issue.manualSeverity()).isTrue();
  97. assertThat(issue.assignee()).isEqualTo("perceval");
  98. assertThat(issue.attribute("key")).isEqualTo("value");
  99. assertThat(issue.authorLogin()).isEqualTo("pierre");
  100. assertThat(issue.creationDate()).isEqualTo(DateUtils.truncate(createdAt, Calendar.SECOND));
  101. assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(updatedAt, Calendar.SECOND));
  102. assertThat(issue.closeDate()).isEqualTo(DateUtils.truncate(closedAt, Calendar.SECOND));
  103. assertThat(issue.isNew()).isFalse();
  104. }
  105. @Test
  106. public void set_rule() {
  107. IssueDto dto = new IssueDto()
  108. .setKee("100")
  109. .setRule(new RuleDefinitionDto().setUuid("uuid-1").setRuleKey("AvoidCycle").setRepositoryKey("squid").setIsExternal(true))
  110. .setLanguage("xoo");
  111. assertThat(dto.getRuleUuid()).isEqualTo("uuid-1");
  112. assertThat(dto.getRuleRepo()).isEqualTo("squid");
  113. assertThat(dto.getRule()).isEqualTo("AvoidCycle");
  114. assertThat(dto.getRuleKey().toString()).isEqualTo("squid:AvoidCycle");
  115. assertThat(dto.getLanguage()).isEqualTo("xoo");
  116. assertThat(dto.isExternal()).isEqualTo(true);
  117. }
  118. @Test
  119. public void set_tags() {
  120. IssueDto dto = new IssueDto();
  121. assertThat(dto.getTags()).isEmpty();
  122. assertThat(dto.getTagsString()).isNull();
  123. dto.setTags(Arrays.asList("tag1", "tag2", "tag3"));
  124. assertThat(dto.getTags()).containsOnly("tag1", "tag2", "tag3");
  125. assertThat(dto.getTagsString()).isEqualTo("tag1,tag2,tag3");
  126. dto.setTags(Arrays.asList());
  127. assertThat(dto.getTags()).isEmpty();
  128. dto.setTagsString("tag1, tag2 ,,tag3");
  129. assertThat(dto.getTags()).containsOnly("tag1", "tag2", "tag3");
  130. dto.setTagsString(null);
  131. assertThat(dto.getTags()).isEmpty();
  132. dto.setTagsString("");
  133. assertThat(dto.getTags()).isEmpty();
  134. }
  135. }