diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-06-29 15:51:28 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2017-07-04 16:29:36 +0200 |
commit | c8963a8ab011c419062226e9b745aa0242b0f5d3 (patch) | |
tree | 5364f3cefbb8078494d9062e778bb010d1a851d9 /tests | |
parent | 82e6624f67a8cb93aea2a2517db879801b8e9346 (diff) | |
download | sonarqube-c8963a8ab011c419062226e9b745aa0242b0f5d3.tar.gz sonarqube-c8963a8ab011c419062226e9b745aa0242b0f5d3.zip |
SONAR-9482 Add IT for WS api/qualityprofiles/show
Diffstat (limited to 'tests')
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); + } +} |