use of org.sonarqube.ws.Hotspots.SearchWsResponse in project sonarqube by SonarSource.
the class SearchActionTest method returns_hotpots_with_any_status_if_no_status_nor_resolution_parameter.
@Test
public void returns_hotpots_with_any_status_if_no_status_nor_resolution_parameter() {
ComponentDto project = dbTester.components().insertPublicProject();
userSessionRule.registerComponents(project);
indexPermissions();
ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
List<IssueDto> hotspots = insertRandomNumberOfHotspotsOfAllSupportedStatusesAndResolutions(project, file).collect(toList());
indexIssues();
SearchWsResponse response = newRequest(project, null, null).executeProtobuf(SearchWsResponse.class);
assertThat(response.getHotspotsList()).extracting(SearchWsResponse.Hotspot::getKey).containsExactlyInAnyOrder(hotspots.stream().map(IssueDto::getKey).toArray(String[]::new));
}
use of org.sonarqube.ws.Hotspots.SearchWsResponse in project sonarqube by SonarSource.
the class SearchActionTest method returns_only_unresolved_hotspots_when_status_is_TO_REVIEW.
@Test
public void returns_only_unresolved_hotspots_when_status_is_TO_REVIEW() {
ComponentDto project = dbTester.components().insertPublicProject();
userSessionRule.registerComponents(project);
indexPermissions();
ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
RuleDefinitionDto rule = newRule(SECURITY_HOTSPOT);
IssueDto unresolvedHotspot = insertHotspot(rule, project, file, t -> t.setResolution(null));
// unrealistic case since a resolution must be set, but shows a limit of current implementation (resolution is enough)
IssueDto badlyResolved = insertHotspot(rule, project, file, t -> t.setStatus(STATUS_TO_REVIEW).setResolution(randomAlphabetic(5)));
IssueDto badlyReviewed = insertHotspot(rule, project, file, t -> t.setStatus(STATUS_REVIEWED).setResolution(null));
IssueDto badlyClosedHotspot = insertHotspot(rule, project, file, t -> t.setStatus(STATUS_CLOSED).setResolution(null));
indexIssues();
SearchWsResponse response = newRequest(project, STATUS_TO_REVIEW, null).executeProtobuf(SearchWsResponse.class);
assertThat(response.getHotspotsList()).extracting(SearchWsResponse.Hotspot::getKey).containsOnly(unresolvedHotspot.getKey());
}
use of org.sonarqube.ws.Hotspots.SearchWsResponse in project sonarqube by SonarSource.
the class SearchActionTest method returns_fields_of_hotspot.
@Test
@UseDataProvider("validStatusesAndResolutions")
public void returns_fields_of_hotspot(String status, @Nullable String resolution) {
ComponentDto project = dbTester.components().insertPublicProject();
userSessionRule.registerComponents(project);
indexPermissions();
ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
RuleDefinitionDto rule = newRule(SECURITY_HOTSPOT);
IssueDto hotspot = insertHotspot(rule, project, file, t -> t.setStatus(randomAlphabetic(11)).setLine(RANDOM.nextInt(230)).setMessage(randomAlphabetic(10)).setAssigneeUuid(randomAlphabetic(9)).setAuthorLogin(randomAlphabetic(8)).setStatus(status).setResolution(resolution));
indexIssues();
SearchWsResponse response = newRequest(project).executeProtobuf(SearchWsResponse.class);
assertThat(response.getHotspotsList()).hasSize(1);
SearchWsResponse.Hotspot actual = response.getHotspots(0);
assertThat(actual.getComponent()).isEqualTo(file.getKey());
assertThat(actual.getProject()).isEqualTo(project.getKey());
assertThat(actual.getStatus()).isEqualTo(status);
if (resolution == null) {
assertThat(actual.hasResolution()).isFalse();
} else {
assertThat(actual.getResolution()).isEqualTo(resolution);
}
assertThat(actual.getLine()).isEqualTo(hotspot.getLine());
assertThat(actual.getMessage()).isEqualTo(hotspot.getMessage());
assertThat(actual.getAssignee()).isEqualTo(hotspot.getAssigneeUuid());
assertThat(actual.getAuthor()).isEqualTo(hotspot.getAuthorLogin());
assertThat(actual.getCreationDate()).isEqualTo(formatDateTime(hotspot.getIssueCreationDate()));
assertThat(actual.getUpdateDate()).isEqualTo(formatDateTime(hotspot.getIssueUpdateDate()));
}
use of org.sonarqube.ws.Hotspots.SearchWsResponse in project sonarqube by SonarSource.
the class SearchActionTest method does_not_fail_if_rule_of_hotspot_does_not_exist_in_DB.
@Test
public void does_not_fail_if_rule_of_hotspot_does_not_exist_in_DB() {
ComponentDto project = dbTester.components().insertPublicProject();
userSessionRule.registerComponents(project);
ComponentDto file = dbTester.components().insertComponent(newFileDto(project));
indexPermissions();
IssueDto[] hotspots = IntStream.range(0, 1 + RANDOM.nextInt(10)).mapToObj(i -> {
RuleDefinitionDto rule = newRule(SECURITY_HOTSPOT);
return insertHotspot(project, file, rule);
}).toArray(IssueDto[]::new);
indexIssues();
IssueDto hotspotWithoutRule = hotspots[RANDOM.nextInt(hotspots.length)];
dbTester.executeUpdateSql("delete from rules where uuid=?", hotspotWithoutRule.getRuleUuid());
SearchWsResponse response = newRequest(project).executeProtobuf(SearchWsResponse.class);
assertThat(response.getHotspotsList()).extracting(Hotspots.SearchWsResponse.Hotspot::getKey).containsOnly(Arrays.stream(hotspots).filter(t -> !t.getKey().equals(hotspotWithoutRule.getKey())).map(IssueDto::getKey).toArray(String[]::new));
}
use of org.sonarqube.ws.Hotspots.SearchWsResponse in project sonarqube by SonarSource.
the class SearchActionTest method succeeds_on_public_application.
@Test
public void succeeds_on_public_application() {
ComponentDto application = dbTester.components().insertPublicApplication();
userSessionRule.registerApplication(application);
SearchWsResponse response = newRequest(application).executeProtobuf(SearchWsResponse.class);
assertThat(response.getHotspotsList()).isEmpty();
assertThat(response.getComponentsList()).isEmpty();
}
Aggregations