import org.junit.rules.ExpectedException;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.issue.Issue;
-import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.Severity;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.TestSystem2;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
-import org.sonar.db.component.ComponentTesting;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.user.GroupDto;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.db.organization.OrganizationTesting.newOrganizationDto;
+import static org.sonar.db.rule.RuleTesting.newRule;
import static org.sonar.db.user.GroupTesting.newGroupDto;
import static org.sonar.db.user.UserTesting.newUserDto;
import static org.sonar.server.issue.IssueDocTesting.newDoc;
@Test
public void filter_by_keys() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
indexIssues(
newDoc("I1", newFileDto(project, null)),
newDoc("I2", newFileDto(project, null)));
assertThatSearchReturnsOnly(IssueQuery.builder().issueKeys(asList("I1", "I2")), "I1", "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().issueKeys(asList("I1")), "I1");
+ assertThatSearchReturnsOnly(IssueQuery.builder().issueKeys(singletonList("I1")), "I1");
assertThatSearchReturnsEmpty(IssueQuery.builder().issueKeys(asList("I3", "I4")));
}
@Test
public void filter_by_projects() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto module = newModuleDto(project);
ComponentDto subModule = newModuleDto(module);
newDoc("I5", subModule),
newDoc("I6", newFileDto(subModule, null)));
- assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(asList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList("unknown")));
+ assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList("unknown")));
}
@Test
@Test
public void filter_by_modules() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto module = newModuleDto(project);
ComponentDto subModule = newModuleDto(module);
ComponentDto file = newFileDto(subModule, null);
newDoc("I5", subModule),
newDoc("I2", file));
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList(project.uuid())).moduleUuids(asList(file.uuid())));
- assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(asList(project.uuid())).moduleUuids(asList(module.uuid())), "I3");
- assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(asList(project.uuid())).moduleUuids(asList(subModule.uuid())), "I2", "I5");
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList(project.uuid())).moduleUuids(asList(project.uuid())));
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList(project.uuid())).moduleUuids(asList("unknown")));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList(project.uuid())).moduleUuids(singletonList(file.uuid())));
+ assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())).moduleUuids(singletonList(module.uuid())), "I3");
+ assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())).moduleUuids(singletonList(subModule.uuid())), "I2", "I5");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList(project.uuid())).moduleUuids(singletonList(project.uuid())));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList(project.uuid())).moduleUuids(singletonList("unknown")));
}
@Test
public void filter_by_components_on_contextualized_search() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto module = newModuleDto(project);
ComponentDto subModule = newModuleDto(module);
ComponentDto file1 = newFileDto(project, null);
newDoc("I6", file3));
assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(asList(file1.uuid(), file2.uuid(), file3.uuid())), "I2", "I4", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(asList(file1.uuid())), "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().moduleRootUuids(asList(subModule.uuid())), "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().moduleRootUuids(asList(module.uuid())), "I3", "I4", "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(asList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(view)), "I1", "I2", "I3", "I4", "I5", "I6");
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList("unknown")));
+ assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(singletonList(file1.uuid())), "I2");
+ assertThatSearchReturnsOnly(IssueQuery.builder().moduleRootUuids(singletonList(subModule.uuid())), "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().moduleRootUuids(singletonList(module.uuid())), "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(view)), "I1", "I2", "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList("unknown")));
}
@Test
newDoc("I5", subModule),
newDoc("I6", file3));
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList("unknown")));
- assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(asList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(view)), "I1", "I2", "I3", "I4", "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().moduleUuids(asList(module.uuid())), "I3", "I4");
- assertThatSearchReturnsOnly(IssueQuery.builder().moduleUuids(asList(subModule.uuid())), "I5", "I6");
- assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(asList(file1.uuid())), "I2");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList("unknown")));
+ assertThatSearchReturnsOnly(IssueQuery.builder().projectUuids(singletonList(project.uuid())), "I1", "I2", "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(view)), "I1", "I2", "I3", "I4", "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().moduleUuids(singletonList(module.uuid())), "I3", "I4");
+ assertThatSearchReturnsOnly(IssueQuery.builder().moduleUuids(singletonList(subModule.uuid())), "I5", "I6");
+ assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(singletonList(file1.uuid())), "I2");
assertThatSearchReturnsOnly(IssueQuery.builder().fileUuids(asList(file1.uuid(), file2.uuid(), file3.uuid())), "I2", "I4", "I6");
}
@Test
public void filter_by_directories() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file1 = newFileDto(project, null).setPath("src/main/xoo/F1.xoo");
ComponentDto file2 = newFileDto(project, null).setPath("F2.xoo");
newDoc("I1", file1).setDirectoryPath("/src/main/xoo"),
newDoc("I2", file2).setDirectoryPath("/"));
- assertThatSearchReturnsOnly(IssueQuery.builder().directories(asList("/src/main/xoo")), "I1");
- assertThatSearchReturnsOnly(IssueQuery.builder().directories(asList("/")), "I2");
- assertThatSearchReturnsEmpty(IssueQuery.builder().directories(asList("unknown")));
+ assertThatSearchReturnsOnly(IssueQuery.builder().directories(singletonList("/src/main/xoo")), "I1");
+ assertThatSearchReturnsOnly(IssueQuery.builder().directories(singletonList("/")), "I2");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().directories(singletonList("unknown")));
}
@Test
public void facets_on_directories() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file1 = newFileDto(project, null).setPath("src/main/xoo/F1.xoo");
ComponentDto file2 = newFileDto(project, null).setPath("F2.xoo");
@Test
public void filter_by_views() {
OrganizationDto organizationDto = newOrganizationDto();
- ComponentDto project1 = ComponentTesting.newPrivateProjectDto(organizationDto);
+ ComponentDto project1 = newPrivateProjectDto(organizationDto);
ComponentDto file1 = newFileDto(project1, null);
- ComponentDto project2 = ComponentTesting.newPrivateProjectDto(organizationDto);
+ ComponentDto project2 = newPrivateProjectDto(organizationDto);
indexIssues(
// Project1 has 2 issues (one on a file and one on the project itself)
newDoc("I1", project1),
String view2 = "CDEF";
indexView(view2, asList(project2.uuid()));
- assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(view1)), "I1", "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(view2)), "I3");
+ assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(view1)), "I1", "I2");
+ assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(singletonList(view2)), "I3");
assertThatSearchReturnsOnly(IssueQuery.builder().viewUuids(asList(view1, view2)), "I1", "I2", "I3");
- assertThatSearchReturnsEmpty(IssueQuery.builder().viewUuids(asList("unknown")));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().viewUuids(singletonList("unknown")));
}
@Test
public void filter_by_views_not_having_projects() {
OrganizationDto organizationDto = newOrganizationDto();
- ComponentDto project1 = ComponentTesting.newPrivateProjectDto(organizationDto);
+ ComponentDto project1 = newPrivateProjectDto(organizationDto);
ComponentDto file1 = newFileDto(project1, null);
indexIssues(newDoc("I2", file1));
String view1 = "ABCD";
@Test
public void filter_by_severities() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I2", file).setSeverity(Severity.MAJOR));
assertThatSearchReturnsOnly(IssueQuery.builder().severities(asList(Severity.INFO, Severity.MAJOR)), "I1", "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().severities(asList(Severity.INFO)), "I1");
- assertThatSearchReturnsEmpty(IssueQuery.builder().severities(asList(Severity.BLOCKER)));
+ assertThatSearchReturnsOnly(IssueQuery.builder().severities(singletonList(Severity.INFO)), "I1");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().severities(singletonList(Severity.BLOCKER)));
}
@Test
public void facets_on_severities() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_statuses() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I2", file).setStatus(Issue.STATUS_OPEN));
assertThatSearchReturnsOnly(IssueQuery.builder().statuses(asList(Issue.STATUS_CLOSED, Issue.STATUS_OPEN)), "I1", "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().statuses(asList(Issue.STATUS_CLOSED)), "I1");
- assertThatSearchReturnsEmpty(IssueQuery.builder().statuses(asList(Issue.STATUS_CONFIRMED)));
+ assertThatSearchReturnsOnly(IssueQuery.builder().statuses(singletonList(Issue.STATUS_CLOSED)), "I1");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().statuses(singletonList(Issue.STATUS_CONFIRMED)));
}
@Test
public void facets_on_statuses() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_resolutions() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I2", file).setResolution(Issue.RESOLUTION_FIXED));
assertThatSearchReturnsOnly(IssueQuery.builder().resolutions(asList(Issue.RESOLUTION_FALSE_POSITIVE, Issue.RESOLUTION_FIXED)), "I1", "I2");
- assertThatSearchReturnsOnly(IssueQuery.builder().resolutions(asList(Issue.RESOLUTION_FALSE_POSITIVE)), "I1");
- assertThatSearchReturnsEmpty(IssueQuery.builder().resolutions(asList(Issue.RESOLUTION_REMOVED)));
+ assertThatSearchReturnsOnly(IssueQuery.builder().resolutions(singletonList(Issue.RESOLUTION_FALSE_POSITIVE)), "I1");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().resolutions(singletonList(Issue.RESOLUTION_REMOVED)));
}
@Test
public void facets_on_resolutions() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_resolved() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_rules() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
- RuleKey ruleKey = RuleKey.of("repo", "X1");
+ RuleDefinitionDto ruleDefinitionDto = newRule();
+ db.rules().insert(ruleDefinitionDto);
- indexIssues(newDoc("I1", file).setRuleKey(ruleKey.toString()));
+ indexIssues(newDoc("I1", file).setRuleId(ruleDefinitionDto.getId()));
- assertThatSearchReturnsOnly(IssueQuery.builder().rules(asList(ruleKey)), "I1");
- assertThatSearchReturnsEmpty(IssueQuery.builder().rules(asList(RuleKey.of("rule", "without issue"))));
+ assertThatSearchReturnsOnly(IssueQuery.builder().rules(singletonList(ruleDefinitionDto.getId())), "I1");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().rules(singletonList(-1)));
}
@Test
public void filter_by_languages() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
- RuleKey ruleKey = RuleKey.of("repo", "X1");
+ RuleDefinitionDto ruleDefinitionDto = newRule();
+ db.rules().insert(ruleDefinitionDto);
- indexIssues(newDoc("I1", file).setRuleKey(ruleKey.toString()).setLanguage("xoo"));
+ indexIssues(newDoc("I1", file).setRuleId(ruleDefinitionDto.getId()).setLanguage("xoo"));
- assertThatSearchReturnsOnly(IssueQuery.builder().languages(asList("xoo")), "I1");
- assertThatSearchReturnsEmpty(IssueQuery.builder().languages(asList("unknown")));
+ assertThatSearchReturnsOnly(IssueQuery.builder().languages(singletonList("xoo")), "I1");
+ assertThatSearchReturnsEmpty(IssueQuery.builder().languages(singletonList("unknown")));
}
@Test
public void facets_on_languages() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
- RuleKey ruleKey = RuleKey.of("repo", "X1");
+ RuleDefinitionDto ruleDefinitionDto = newRule();
+ db.rules().insert(ruleDefinitionDto);
- indexIssues(newDoc("I1", file).setRuleKey(ruleKey.toString()).setLanguage("xoo"));
+ indexIssues(newDoc("I1", file).setRuleId(ruleDefinitionDto.getId()).setLanguage("xoo"));
assertThatFacetHasOnly(IssueQuery.builder(), "languages", entry("xoo", 1L));
}
@Test
public void filter_by_assignees() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I2", file).setAssignee("marcel"),
newDoc("I3", file).setAssignee(null));
- assertThatSearchReturnsOnly(IssueQuery.builder().assignees(asList("steph")), "I1");
+ assertThatSearchReturnsOnly(IssueQuery.builder().assignees(singletonList("steph")), "I1");
assertThatSearchReturnsOnly(IssueQuery.builder().assignees(asList("steph", "marcel")), "I1", "I2");
- assertThatSearchReturnsEmpty(IssueQuery.builder().assignees(asList("unknown")));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().assignees(singletonList("unknown")));
}
@Test
public void facets_on_assignees() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void facets_on_assignees_supports_dashes() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I3", file).setAssignee("marcel"),
newDoc("I4", file).setAssignee(null));
- assertThatFacetHasOnly(IssueQuery.builder().assignees(asList("j-b")), "assignees", entry("j-b", 1L), entry("marcel", 2L), entry("", 1L));
+ assertThatFacetHasOnly(IssueQuery.builder().assignees(singletonList("j-b")), "assignees", entry("j-b", 1L), entry("marcel", 2L), entry("", 1L));
}
@Test
public void filter_by_assigned() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_authors() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
newDoc("I2", file).setAuthorLogin("marcel"),
newDoc("I3", file).setAssignee(null));
- assertThatSearchReturnsOnly(IssueQuery.builder().authors(asList("steph")), "I1");
+ assertThatSearchReturnsOnly(IssueQuery.builder().authors(singletonList("steph")), "I1");
assertThatSearchReturnsOnly(IssueQuery.builder().authors(asList("steph", "marcel")), "I1", "I2");
- assertThatSearchReturnsEmpty(IssueQuery.builder().authors(asList("unknown")));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().authors(singletonList("unknown")));
}
@Test
public void facets_on_authors() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_created_after() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_created_before() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_created_after_and_before() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_create_after_and_before_take_into_account_timezone() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void filter_by_created_at() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(newDoc("I1", file).setFuncCreationDate(parseDate("2014-09-20")));
}
private SearchOptions fixtureForCreatedAtFacet() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
IssueDoc issue0 = newDoc("ISSUE0", file).setFuncCreationDate(parseDateTime("2011-04-25T00:05:13+0000"));
@Test
public void paging() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
for (int i = 0; i < 12; i++) {
indexIssues(newDoc("I" + i, file));
@Test
public void search_with_max_limit() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
List<IssueDoc> issues = new ArrayList<>();
for (int i = 0; i < 500; i++) {
@Test
public void sort_by_status() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_severity() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_assignee() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_creation_date() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_update_date() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_close_date() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
@Test
public void sort_by_file_and_line() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file1 = newFileDto(project, null, "F1").setPath("src/main/xoo/org/sonar/samples/File.xoo");
ComponentDto file2 = newFileDto(project, null, "F2").setPath("src/main/xoo/org/sonar/samples/File2.xoo");
@Test
public void authorized_issues_on_groups() {
OrganizationDto org = newOrganizationDto();
- ComponentDto project1 = ComponentTesting.newPrivateProjectDto(org);
- ComponentDto project2 = ComponentTesting.newPrivateProjectDto(org);
- ComponentDto project3 = ComponentTesting.newPrivateProjectDto(org);
+ ComponentDto project1 = newPrivateProjectDto(org);
+ ComponentDto project2 = newPrivateProjectDto(org);
+ ComponentDto project3 = newPrivateProjectDto(org);
ComponentDto file1 = newFileDto(project1, null);
ComponentDto file2 = newFileDto(project2, null);
ComponentDto file3 = newFileDto(project3, null);
assertThatSearchReturnsEmpty(IssueQuery.builder());
userSessionRule.logIn().setGroups(group1, group2);
- assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(asList(project3.uuid())));
+ assertThatSearchReturnsEmpty(IssueQuery.builder().projectUuids(singletonList(project3.uuid())));
}
@Test
public void authorized_issues_on_user() {
OrganizationDto org = newOrganizationDto();
- ComponentDto project1 = ComponentTesting.newPrivateProjectDto(org);
- ComponentDto project2 = ComponentTesting.newPrivateProjectDto(org);
- ComponentDto project3 = ComponentTesting.newPrivateProjectDto(org);
+ ComponentDto project1 = newPrivateProjectDto(org);
+ ComponentDto project2 = newPrivateProjectDto(org);
+ ComponentDto project3 = newPrivateProjectDto(org);
ComponentDto file1 = newFileDto(project1, null);
ComponentDto file2 = newFileDto(project2, null);
ComponentDto file3 = newFileDto(project3, null);
@Test
public void root_user_is_authorized_to_access_all_issues() {
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
indexIssue(newDoc("I1", project));
userSessionRule.logIn().setRoot();
OrganizationDto org = db.organizations().insert();
OrganizationDto anotherOrg = db.organizations().insert();
- ComponentDto project = ComponentTesting.newPrivateProjectDto(newOrganizationDto());
+ ComponentDto project = newPrivateProjectDto(newOrganizationDto());
ComponentDto file = newFileDto(project, null);
indexIssues(
- newDoc("I42", file).setOrganizationUuid(anotherOrg.getUuid()).setRuleKey(r1.getKey().toString()).setTags(of("another")),
- newDoc("I1", file).setOrganizationUuid(org.getUuid()).setRuleKey(r1.getKey().toString()).setTags(of("convention", "java8", "bug")),
- newDoc("I2", file).setOrganizationUuid(org.getUuid()).setRuleKey(r1.getKey().toString()).setTags(of("convention", "bug")),
- newDoc("I3", file).setOrganizationUuid(org.getUuid()).setRuleKey(r2.getKey().toString()),
- newDoc("I4", file).setOrganizationUuid(org.getUuid()).setRuleKey(r1.getKey().toString()).setTags(of("convention")));
+ newDoc("I42", file).setOrganizationUuid(anotherOrg.getUuid()).setRuleId(r1.getId()).setTags(of("another")),
+ newDoc("I1", file).setOrganizationUuid(org.getUuid()).setRuleId(r1.getId()).setTags(of("convention", "java8", "bug")),
+ newDoc("I2", file).setOrganizationUuid(org.getUuid()).setRuleId(r1.getId()).setTags(of("convention", "bug")),
+ newDoc("I3", file).setOrganizationUuid(org.getUuid()).setRuleId(r2.getId()),
+ newDoc("I4", file).setOrganizationUuid(org.getUuid()).setRuleId(r1.getId()).setTags(of("convention")));
assertThat(underTest.listTags(org, null, 100)).containsOnly("convention", "java8", "bug");
assertThat(underTest.listTags(org, null, 2)).containsOnly("bug", "convention");
@Test
public void test_listAuthors() {
OrganizationDto org = newOrganizationDto();
- ComponentDto project = ComponentTesting.newPrivateProjectDto(org);
+ ComponentDto project = newPrivateProjectDto(org);
indexIssues(
newDoc("issue1", project).setAuthorLogin("luke.skywalker"),
newDoc("issue2", project).setAuthorLogin("luke@skywalker.name"),
@Test
public void listAuthors_escapes_regexp_special_characters() {
OrganizationDto org = newOrganizationDto();
- ComponentDto project = ComponentTesting.newPrivateProjectDto(org);
+ ComponentDto project = newPrivateProjectDto(org);
indexIssues(
newDoc("issue1", project).setAuthorLogin("name++"));
IssueQuery query = IssueQuery.builder()
@Test
public void filter_by_organization() {
OrganizationDto org1 = newOrganizationDto();
- ComponentDto projectInOrg1 = ComponentTesting.newPrivateProjectDto(org1);
+ ComponentDto projectInOrg1 = newPrivateProjectDto(org1);
OrganizationDto org2 = newOrganizationDto();
- ComponentDto projectInOrg2 = ComponentTesting.newPrivateProjectDto(org2);
+ ComponentDto projectInOrg2 = newPrivateProjectDto(org2);
indexIssues(newDoc("issueInOrg1", projectInOrg1), newDoc("issue1InOrg2", projectInOrg2), newDoc("issue2InOrg2", projectInOrg2));
@Test
public void filter_by_organization_and_project() {
OrganizationDto org1 = newOrganizationDto();
- ComponentDto projectInOrg1 = ComponentTesting.newPrivateProjectDto(org1);
+ ComponentDto projectInOrg1 = newPrivateProjectDto(org1);
OrganizationDto org2 = newOrganizationDto();
- ComponentDto projectInOrg2 = ComponentTesting.newPrivateProjectDto(org2);
+ ComponentDto projectInOrg2 = newPrivateProjectDto(org2);
indexIssues(newDoc("issueInOrg1", projectInOrg1), newDoc("issue1InOrg2", projectInOrg2), newDoc("issue2InOrg2", projectInOrg2));
// no conflict
- IssueQuery.Builder query = IssueQuery.builder().organizationUuid(org1.getUuid()).projectUuids(asList(projectInOrg1.uuid()));
+ IssueQuery.Builder query = IssueQuery.builder().organizationUuid(org1.getUuid()).projectUuids(singletonList(projectInOrg1.uuid()));
assertThatSearchReturnsOnly(query, "issueInOrg1");
// conflict
- query = IssueQuery.builder().organizationUuid(org1.getUuid()).projectUuids(asList(projectInOrg2.uuid()));
+ query = IssueQuery.builder().organizationUuid(org1.getUuid()).projectUuids(singletonList(projectInOrg2.uuid()));
assertThatSearchReturnsEmpty(query);
}
@Test
public void countTags() {
OrganizationDto org = newOrganizationDto();
- ComponentDto project = ComponentTesting.newPrivateProjectDto(org);
+ ComponentDto project = newPrivateProjectDto(org);
indexIssues(
newDoc("issue1", project).setTags(ImmutableSet.of("convention", "java8", "bug")),
newDoc("issue2", project).setTags(ImmutableSet.of("convention", "bug")),
}
private void assertThatFacetHasExactly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) {
- SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(asList(facet)));
+ SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet)));
Facets facets = new Facets(result, system2.getDefaultTimeZone());
assertThat(facets.getNames()).containsOnly(facet);
assertThat(facets.get(facet)).containsExactly(expectedEntries);
}
private void assertThatFacetHasOnly(IssueQuery.Builder query, String facet, Map.Entry<String, Long>... expectedEntries) {
- SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(asList(facet)));
+ SearchResponse result = underTest.search(query.build(), new SearchOptions().addFacets(singletonList(facet)));
Facets facets = new Facets(result, system2.getDefaultTimeZone());
assertThat(facets.getNames()).containsOnly(facet);
assertThat(facets.get(facet)).containsOnly(expectedEntries);
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_HIDE_COMMENTS;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PAGE_INDEX;
import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_PAGE_SIZE;
+import static org.sonarqube.ws.client.issue.IssuesWsParameters.PARAM_RULES;
public class SearchActionTest {
private SearchResponseLoader searchResponseLoader = new SearchResponseLoader(userSessionRule, dbClient, new TransitionService(userSessionRule, issueWorkflow));
private Languages languages = new Languages();
private SearchResponseFormat searchResponseFormat = new SearchResponseFormat(new Durations(), new WsResponseCommonFormat(languages), languages, new AvatarResolverImpl());
- private WsActionTester ws = new WsActionTester(new SearchAction(userSessionRule, issueIndex, issueQueryFactory, searchResponseLoader, searchResponseFormat, System2.INSTANCE));
+ private WsActionTester ws = new WsActionTester(new SearchAction(userSessionRule, issueIndex, issueQueryFactory, searchResponseLoader, searchResponseFormat, System2.INSTANCE,
+ dbClient));
private OrganizationDto defaultOrganization;
private OrganizationDto otherOrganization1;
private OrganizationDto otherOrganization2;
//SONAR-10217
@Test
- public void empty_search_with_unknown_branch() throws Exception {
+ public void empty_search_with_unknown_branch() {
TestResponse result = ws.newRequest()
.setParam("onComponentOnly", "true")
.setParam("componentKeys", "foo")
}
@Test
- public void empty_search() throws Exception {
+ public void empty_search() {
TestResponse result = ws.newRequest()
.execute();
}
@Test
- public void response_contains_all_fields_except_additional_fields() throws Exception {
+ public void response_contains_all_fields_except_additional_fields() {
dbClient.userDao().insert(session, new UserDto().setLogin("simon").setName("Simon").setEmail("simon@email.com"));
dbClient.userDao().insert(session, new UserDto().setLogin("fabrice").setName("Fabrice").setEmail("fabrice@email.com"));
}
@Test
- public void issue_with_comments() throws Exception {
+ public void issue_with_comments() {
dbClient.userDao().insert(session, new UserDto().setLogin("john").setName("John"));
dbClient.userDao().insert(session, new UserDto().setLogin("fabrice").setName("Fabrice").setEmail("fabrice@email.com"));
}
@Test
- public void issue_with_comment_hidden() throws Exception {
+ public void issue_with_comment_hidden() {
dbClient.userDao().insert(session, new UserDto().setLogin("john").setName("John").setEmail("john@email.com"));
dbClient.userDao().insert(session, new UserDto().setLogin("fabrice").setName("Fabrice").setEmail("fabrice@email.com"));
}
@Test
- public void load_additional_fields() throws Exception {
+ public void load_additional_fields() {
dbClient.userDao().insert(session, new UserDto().setLogin("simon").setName("Simon").setEmail("simon@email.com"));
dbClient.userDao().insert(session, new UserDto().setLogin("fabrice").setName("Fabrice").setEmail("fabrice@email.com"));
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY").setLanguage("java"));
}
@Test
- public void load_additional_fields_with_issue_admin_permission() throws Exception {
+ public void load_additional_fields_with_issue_admin_permission() {
dbClient.userDao().insert(session, new UserDto().setLogin("simon").setName("Simon").setEmail("simon@email.com"));
dbClient.userDao().insert(session, new UserDto().setLogin("fabrice").setName("Fabrice").setEmail("fabrice@email.com"));
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY").setLanguage("java"));
}
@Test
- public void issue_on_removed_file() throws Exception {
+ public void search_by_rule_key() {
+ RuleDto rule = newRule();
+ ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY").setLanguage("java"));
+ ComponentDto file = insertComponent(ComponentTesting.newFileDto(project, null, "FILE_ID").setDbKey("FILE_KEY").setLanguage("java"));
+
+ IssueDto issue = IssueTesting.newIssue(rule.getDefinition(), project, file);
+ dbClient.issueDao().insert(session, issue);
+ session.commit();
+ indexIssues();
+
+ userSessionRule.logIn("john")
+ .addProjectPermission(ISSUE_ADMIN, project); // granted by Anyone
+ indexPermissions();
+
+ TestResponse execute = ws.newRequest()
+ .setParam(PARAM_RULES, rule.getKey().toString())
+ .setParam("additionalFields", "_all")
+ .execute();
+ execute.assertJson(this.getClass(), "result_for_rule_search.json");
+ }
+
+ @Test
+ public void issue_on_removed_file() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void apply_paging_with_one_component() throws Exception {
+ public void apply_paging_with_one_component() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void components_contains_sub_projects() throws Exception {
+ public void components_contains_sub_projects() {
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("ProjectHavingModule"));
indexPermissions();
ComponentDto module = insertComponent(ComponentTesting.newModuleDto(project).setDbKey("ModuleHavingFile"));
}
@Test
- public void display_facets() throws Exception {
+ public void display_facets() {
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
ComponentDto file = insertComponent(ComponentTesting.newFileDto(project, null, "FILE_ID").setDbKey("FILE_KEY"));
}
@Test
- public void display_facets_in_effort_mode() throws Exception {
+ public void display_facets_in_effort_mode() {
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
ComponentDto file = insertComponent(ComponentTesting.newFileDto(project, null, "FILE_ID").setDbKey("FILE_KEY"));
}
@Test
- public void display_zero_valued_facets_for_selected_items() throws Exception {
+ public void display_zero_valued_facets_for_selected_items() {
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
ComponentDto file = insertComponent(ComponentTesting.newFileDto(project, null, "FILE_ID").setDbKey("FILE_KEY"));
}
@Test
- public void assignedToMe_facet_must_escape_login_of_authenticated_user() throws Exception {
+ public void assignedToMe_facet_must_escape_login_of_authenticated_user() {
// login looks like an invalid regexp
userSessionRule.logIn("foo[");
}
@Test
- public void filter_by_assigned_to_me() throws Exception {
+ public void filter_by_assigned_to_me() {
dbClient.userDao().insert(session, new UserDto().setLogin("john").setName("John").setEmail("john@email.com"));
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(defaultOrganization, "PROJECT_ID").setDbKey("PROJECT_KEY"));
}
@Test
- public void filter_by_assigned_to_me_unauthenticated() throws Exception {
+ public void filter_by_assigned_to_me_unauthenticated() {
userSessionRule.logIn();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY"));
}
@Test
- public void assigned_to_me_facet_is_sticky_relative_to_assignees() throws Exception {
+ public void assigned_to_me_facet_is_sticky_relative_to_assignees() {
dbClient.userDao().insert(session, new UserDto().setLogin("alice").setName("Alice").setEmail("alice@email.com"));
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
}
@Test
- public void sort_by_updated_at() throws Exception {
+ public void sort_by_updated_at() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void paging() throws Exception {
+ public void paging() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void paging_with_page_size_to_minus_one() throws Exception {
+ public void paging_with_page_size_to_minus_one() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization2, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void deprecated_paging() throws Exception {
+ public void deprecated_paging() {
RuleDto rule = newRule();
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(defaultOrganization, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
}
@Test
- public void default_page_size_is_100() throws Exception {
+ public void default_page_size_is_100() {
ws.newRequest()
.execute()
.assertJson(this.getClass(), "default_page_size_is_100.json");
}
@Test
- public void display_deprecated_debt_fields() throws Exception {
+ public void display_deprecated_debt_fields() {
ComponentDto project = insertComponent(ComponentTesting.newPublicProjectDto(otherOrganization1, "PROJECT_ID").setDbKey("PROJECT_KEY"));
indexPermissions();
ComponentDto file = insertComponent(ComponentTesting.newFileDto(project, null, "FILE_ID").setDbKey("FILE_KEY"));