aboutsummaryrefslogtreecommitdiffstats
path: root/it/it-tests
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2017-06-20 11:41:57 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2017-06-20 15:16:02 +0200
commit25e95eda0c4c00bf5a92543db8b5e990f901d117 (patch)
treede0fe405ea4bd7096fbea74d20d80ba6a854547b /it/it-tests
parent45ae7835e43c8ac6f676a5a50eb164d7a8a4e9d5 (diff)
downloadsonarqube-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.java74
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");
}
}