diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-06-20 11:41:57 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-06-20 15:16:02 +0200 |
commit | 25e95eda0c4c00bf5a92543db8b5e990f901d117 (patch) | |
tree | de0fe405ea4bd7096fbea74d20d80ba6a854547b /it/it-tests | |
parent | 45ae7835e43c8ac6f676a5a50eb164d7a8a4e9d5 (diff) | |
download | sonarqube-25e95eda0c4c00bf5a92543db8b5e990f901d117.tar.gz sonarqube-25e95eda0c4c00bf5a92543db8b5e990f901d117.zip |
SONAR-9441 WS api/duplications/show fails properly when no parameter provided
Diffstat (limited to 'it/it-tests')
-rw-r--r-- | it/it-tests/src/test/java/it/duplication/DuplicationsTest.java | 74 |
1 files changed, 46 insertions, 28 deletions
diff --git a/it/it-tests/src/test/java/it/duplication/DuplicationsTest.java b/it/it-tests/src/test/java/it/duplication/DuplicationsTest.java index ea55e0eb24b..6eddcee5915 100644 --- a/it/it-tests/src/test/java/it/duplication/DuplicationsTest.java +++ b/it/it-tests/src/test/java/it/duplication/DuplicationsTest.java @@ -28,14 +28,19 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; +import org.sonarqube.ws.client.GetRequest; +import org.sonarqube.ws.client.WsClient; +import org.sonarqube.ws.client.WsResponse; import org.sonarqube.ws.client.issue.SearchWsRequest; import util.ItUtils; import util.issue.IssueRule; +import static java.net.HttpURLConnection.HTTP_BAD_REQUEST; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.skyscreamer.jsonassert.JSONAssert.assertEquals; import static util.ItUtils.getMeasuresAsDoubleByMetricKey; +import static util.ItUtils.newAdminWsClient; import static util.ItUtils.runProjectAnalysis; import static util.ItUtils.setServerProperty; @@ -51,6 +56,8 @@ public class DuplicationsTest { @ClassRule public static final IssueRule issueRule = IssueRule.from(orchestrator); + private static WsClient adminWsClient; + @BeforeClass public static void analyzeProjects() { orchestrator.resetData(); @@ -62,6 +69,8 @@ public class DuplicationsTest { // Set minimum tokens to a big value in order to not get duplications setServerProperty(orchestrator, "sonar.cpd.xoo.minimumTokens", "1000"); analyzeProject(WITHOUT_ENOUGH_TOKENS); + + adminWsClient = newAdminWsClient(orchestrator); } @AfterClass @@ -69,6 +78,37 @@ public class DuplicationsTest { setServerProperty(orchestrator, "sonar.cpd.xoo.minimumTokens", null); } + private static Map<String, Double> getMeasures(String key) { + return getMeasuresAsDoubleByMetricKey(orchestrator, key, "duplicated_lines", "duplicated_blocks", "duplicated_files", "duplicated_lines_density"); + } + + private static void verifyDuplicationMeasures(String componentKey, int duplicatedBlocks, int duplicatedLines, int duplicatedFiles, double duplicatedLinesDensity) { + Map<String, Double> measures = getMeasures(componentKey); + assertThat(measures.get("duplicated_blocks").intValue()).isEqualTo(duplicatedBlocks); + assertThat(measures.get("duplicated_lines").intValue()).isEqualTo(duplicatedLines); + assertThat(measures.get("duplicated_files").intValue()).isEqualTo(duplicatedFiles); + assertThat(measures.get("duplicated_lines_density")).isEqualTo(duplicatedLinesDensity); + } + + private static void analyzeProject(String projectKey, String... additionalProperties) { + orchestrator.getServer().provisionProject(projectKey, projectKey); + orchestrator.getServer().associateProjectToQualityProfile(projectKey, "xoo", "xoo-duplication-profile"); + + runProjectAnalysis(orchestrator, "duplications/file-duplications", + ObjectArrays.concat( + new String[] { + "sonar.projectKey", projectKey, + "sonar.projectName", projectKey + }, + additionalProperties, String.class)); + } + + private static void verifyWsResultOnDuplicateFile(String fileKey, String ws, String expectedFilePath) throws Exception { + String duplication = orchestrator.getServer().adminWsClient().get(ws, "key", fileKey); + assertEquals(IOUtils.toString(CrossProjectDuplicationsTest.class.getResourceAsStream("/duplication/DuplicationsTest/" + expectedFilePath), "UTF-8"), duplication, + false); + } + @Test public void duplicated_lines_within_same_file() { verifyDuplicationMeasures(DUPLICATIONS + ":src/main/xoo/duplicated_lines_within_same_file/DuplicatedLinesInSameFile.xoo", @@ -137,35 +177,13 @@ public class DuplicationsTest { "api/duplications/show", "duplications_show-expected.json"); } - private static Map<String, Double> getMeasures(String key) { - return getMeasuresAsDoubleByMetricKey(orchestrator, key, "duplicated_lines", "duplicated_blocks", "duplicated_files", "duplicated_lines_density"); - } - - private static void verifyDuplicationMeasures(String componentKey, int duplicatedBlocks, int duplicatedLines, int duplicatedFiles, double duplicatedLinesDensity) { - Map<String, Double> measures = getMeasures(componentKey); - assertThat(measures.get("duplicated_blocks").intValue()).isEqualTo(duplicatedBlocks); - assertThat(measures.get("duplicated_lines").intValue()).isEqualTo(duplicatedLines); - assertThat(measures.get("duplicated_files").intValue()).isEqualTo(duplicatedFiles); - assertThat(measures.get("duplicated_lines_density")).isEqualTo(duplicatedLinesDensity); - } - - private static void analyzeProject(String projectKey, String... additionalProperties) { - orchestrator.getServer().provisionProject(projectKey, projectKey); - orchestrator.getServer().associateProjectToQualityProfile(projectKey, "xoo", "xoo-duplication-profile"); - - runProjectAnalysis(orchestrator, "duplications/file-duplications", - ObjectArrays.concat( - new String[] { - "sonar.projectKey", projectKey, - "sonar.projectName", projectKey - }, - additionalProperties, String.class)); - } + // SONAR-9441 + @Test + public void fail_properly_when_no_parameter() { + WsResponse result = adminWsClient.wsConnector().call(new GetRequest("api/duplications/show")); - private static void verifyWsResultOnDuplicateFile(String fileKey, String ws, String expectedFilePath) throws Exception { - String duplication = orchestrator.getServer().adminWsClient().get(ws, "key", fileKey); - assertEquals(IOUtils.toString(CrossProjectDuplicationsTest.class.getResourceAsStream("/duplication/DuplicationsTest/" + expectedFilePath), "UTF-8"), duplication, - false); + assertThat(result.code()).isEqualTo(HTTP_BAD_REQUEST); + assertThat(result.content()).contains("Either 'uuid' or 'key' must be provided, not both"); } } |