aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2017-06-29 15:51:28 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2017-07-04 16:29:36 +0200
commitc8963a8ab011c419062226e9b745aa0242b0f5d3 (patch)
tree5364f3cefbb8078494d9062e778bb010d1a851d9 /tests
parent82e6624f67a8cb93aea2a2517db879801b8e9346 (diff)
downloadsonarqube-c8963a8ab011c419062226e9b745aa0242b0f5d3.tar.gz
sonarqube-c8963a8ab011c419062226e9b745aa0242b0f5d3.zip
SONAR-9482 Add IT for WS api/qualityprofiles/show
Diffstat (limited to 'tests')
-rw-r--r--tests/src/test/java/org/sonarqube/tests/Category6Suite.java8
-rw-r--r--tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesTest.java10
-rw-r--r--tests/src/test/java/org/sonarqube/tests/qualityProfile/QualityProfilesWsTest.java89
3 files changed, 101 insertions, 6 deletions
diff --git a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java
index 96983945555..7ba1461f702 100644
--- a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java
+++ b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java
@@ -20,6 +20,9 @@
package org.sonarqube.tests;
import com.sonar.orchestrator.Orchestrator;
+import org.junit.ClassRule;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
import org.sonarqube.tests.issue.IssueTagsTest;
import org.sonarqube.tests.issue.OrganizationIssueAssignTest;
import org.sonarqube.tests.organization.BillingTest;
@@ -33,11 +36,9 @@ import org.sonarqube.tests.projectSearch.SearchProjectsTest;
import org.sonarqube.tests.qualityProfile.BuiltInQualityProfilesTest;
import org.sonarqube.tests.qualityProfile.CustomQualityProfilesTest;
import org.sonarqube.tests.qualityProfile.OrganizationQualityProfilesUiTest;
+import org.sonarqube.tests.qualityProfile.QualityProfilesWsTest;
import org.sonarqube.tests.ui.OrganizationUiExtensionsTest;
import org.sonarqube.tests.user.OrganizationIdentityProviderTest;
-import org.junit.ClassRule;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
import static util.ItUtils.pluginArtifact;
import static util.ItUtils.xooPlugin;
@@ -57,6 +58,7 @@ import static util.ItUtils.xooPlugin;
OrganizationUiExtensionsTest.class,
PersonalOrganizationTest.class,
BuiltInQualityProfilesTest.class,
+ QualityProfilesWsTest.class,
CustomQualityProfilesTest.class,
BillingTest.class,
IssueTagsTest.class,
diff --git a/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesTest.java b/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesTest.java
index 82719d800f3..286b412d1fa 100644
--- a/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesTest.java
+++ b/tests/src/test/java/org/sonarqube/tests/qualityProfile/BuiltInQualityProfilesTest.java
@@ -20,11 +20,11 @@
package org.sonarqube.tests.qualityProfile;
import com.sonar.orchestrator.Orchestrator;
-import org.sonarqube.tests.Category6Suite;
import java.util.function.Predicate;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
+import org.sonarqube.tests.Category6Suite;
import org.sonarqube.tests.Session;
import org.sonarqube.tests.Tester;
import org.sonarqube.ws.Organizations.Organization;
@@ -61,8 +61,10 @@ public class BuiltInQualityProfilesTest {
.extracting(QualityProfile::getName, QualityProfile::getLanguage, QualityProfile::getIsBuiltIn, QualityProfile::getIsDefault)
.containsExactlyInAnyOrder(
tuple("Basic", "xoo", true, true),
+ tuple("Sonar way", "xoo", true, false),
tuple("empty", "xoo", true, false),
- tuple("Basic", "xoo2", true, true));
+ tuple("Basic", "xoo2", true, true),
+ tuple("Sonar way", "xoo2", true, false));
}
@Test
@@ -73,8 +75,10 @@ public class BuiltInQualityProfilesTest {
.extracting(QualityProfile::getOrganization, QualityProfile::getName, QualityProfile::getLanguage, QualityProfile::getIsBuiltIn, QualityProfile::getIsDefault)
.containsExactlyInAnyOrder(
tuple("default-organization", "Basic", "xoo", true, true),
+ tuple("default-organization", "Sonar way", "xoo", true, false),
tuple("default-organization", "empty", "xoo", true, false),
- tuple("default-organization", "Basic", "xoo2", true, true));
+ tuple("default-organization", "Basic", "xoo2", true, true),
+ tuple("default-organization", "Sonar way", "xoo2", true, false));
}
@Test
diff --git a/tests/src/test/java/org/sonarqube/tests/qualityProfile/QualityProfilesWsTest.java b/tests/src/test/java/org/sonarqube/tests/qualityProfile/QualityProfilesWsTest.java
new file mode 100644
index 00000000000..8cef4efa64c
--- /dev/null
+++ b/tests/src/test/java/org/sonarqube/tests/qualityProfile/QualityProfilesWsTest.java
@@ -0,0 +1,89 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonarqube.tests.qualityProfile;
+
+import com.sonar.orchestrator.Orchestrator;
+import java.util.function.Predicate;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonarqube.tests.Category6Suite;
+import org.sonarqube.tests.Tester;
+import org.sonarqube.ws.Organizations.Organization;
+import org.sonarqube.ws.QualityProfiles.CreateWsResponse;
+import org.sonarqube.ws.QualityProfiles.SearchWsResponse;
+import org.sonarqube.ws.QualityProfiles.ShowResponse;
+import org.sonarqube.ws.QualityProfiles.ShowResponse.CompareToSonarWay;
+import org.sonarqube.ws.QualityProfiles.ShowResponse.QualityProfile;
+import org.sonarqube.ws.client.qualityprofile.SearchWsRequest;
+import org.sonarqube.ws.client.qualityprofile.ShowRequest;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class QualityProfilesWsTest {
+ private static final String RULE_ONE_BUG_PER_LINE = "xoo:OneBugIssuePerLine";
+ private static final String RULE_ONE_ISSUE_PER_LINE = "xoo:OneIssuePerLine";
+
+ @ClassRule
+ public static Orchestrator orchestrator = Category6Suite.ORCHESTRATOR;
+
+ @Rule
+ public Tester tester = new Tester(orchestrator);
+
+ @Test
+ public void show() {
+ Organization org = tester.organizations().generate();
+ CreateWsResponse.QualityProfile xooProfile = tester.qProfiles().createXooProfile(org);
+ tester.qProfiles().activateRule(xooProfile, RULE_ONE_BUG_PER_LINE);
+ tester.qProfiles().activateRule(xooProfile, RULE_ONE_ISSUE_PER_LINE);
+
+ ShowResponse result = tester.qProfiles().service().show(new ShowRequest().setProfile(xooProfile.getKey()));
+
+ assertThat(result.getProfile())
+ .extracting(QualityProfile::getName, QualityProfile::getLanguage, QualityProfile::getIsBuiltIn, QualityProfile::getIsDefault,
+ QualityProfile::getActiveRuleCount, QualityProfile::getActiveDeprecatedRuleCount)
+ .containsExactly(xooProfile.getName(), xooProfile.getLanguage(), false, false, 2L, 0L);
+ }
+
+ @Test
+ public void show_with_sonar_way_comparison() {
+ Organization org = tester.organizations().generate();
+ CreateWsResponse.QualityProfile xooProfile = tester.qProfiles().createXooProfile(org);
+ tester.qProfiles().activateRule(xooProfile, RULE_ONE_BUG_PER_LINE);
+ tester.qProfiles().activateRule(xooProfile, RULE_ONE_ISSUE_PER_LINE);
+ SearchWsResponse.QualityProfile sonarWay = getProfile(org, p -> "Sonar way".equals(p.getName()) && "xoo".equals(p.getLanguage()) && p.getIsBuiltIn());
+
+ CompareToSonarWay result = tester.qProfiles().service().show(new ShowRequest()
+ .setProfile(xooProfile.getKey())
+ .setCompareToSonarWay(true)).getCompareToSonarWay();
+
+ assertThat(result)
+ .extracting(CompareToSonarWay::getProfile, CompareToSonarWay::getProfileName, CompareToSonarWay::getMissingRuleCount)
+ .containsExactly(sonarWay.getKey(), sonarWay.getName(), 2L);
+ }
+
+ private SearchWsResponse.QualityProfile getProfile(Organization organization, Predicate<SearchWsResponse.QualityProfile> filter) {
+ return tester.qProfiles().service().search(new SearchWsRequest()
+ .setOrganizationKey(organization.getKey())).getProfilesList()
+ .stream()
+ .filter(filter)
+ .findAny().orElseThrow(IllegalStateException::new);
+ }
+}