diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2017-06-06 15:38:03 +0200 |
---|---|---|
committer | Eric Hartmann <hartmann.eric@gmail.com> | 2017-06-14 15:43:13 +0200 |
commit | 93ece4c32cb488af46855b3ee9d53d7fd9e787b8 (patch) | |
tree | 8070f87eff0941973158f8919520f108244622c2 /it/it-tests/src | |
parent | 4c9807a6d016bd7da4419f21c8a736f5f014493d (diff) | |
download | sonarqube-93ece4c32cb488af46855b3ee9d53d7fd9e787b8.tar.gz sonarqube-93ece4c32cb488af46855b3ee9d53d7fd9e787b8.zip |
SONAR-9304 Compress rules_profiles for built-in profiles
Diffstat (limited to 'it/it-tests/src')
-rw-r--r-- | it/it-tests/src/test/java/it/Category4Suite.java | 3 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/Category5Suite.java | 4 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/Category6Suite.java | 10 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java | 4 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java | 6 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/organization/OrganizationTest.java | 10 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/organization/RootUserOnOrganizationTest.java (renamed from it/it-tests/src/test/java/it/organization/RootTest.java) | 48 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/organization/RootUserTest.java | 55 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java | 4 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java | 5 | ||||
-rw-r--r-- | it/it-tests/src/test/java/util/ItUtils.java | 10 |
11 files changed, 109 insertions, 50 deletions
diff --git a/it/it-tests/src/test/java/it/Category4Suite.java b/it/it-tests/src/test/java/it/Category4Suite.java index 878c8eb846d..9ab69253da6 100644 --- a/it/it-tests/src/test/java/it/Category4Suite.java +++ b/it/it-tests/src/test/java/it/Category4Suite.java @@ -29,6 +29,7 @@ import it.duplication.CrossProjectDuplicationsOnRemoveFileTest; import it.duplication.CrossProjectDuplicationsTest; import it.duplication.DuplicationsTest; import it.duplication.NewDuplicationsTest; +import it.organization.RootUserTest; import it.projectEvent.EventTest; import it.projectEvent.ProjectActivityPageTest; import it.qualityProfile.QualityProfilesPageTest; @@ -57,6 +58,8 @@ import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @Suite.SuiteClasses({ + // organization + RootUserTest.class, // server system ServerSystemTest.class, PingTest.class, diff --git a/it/it-tests/src/test/java/it/Category5Suite.java b/it/it-tests/src/test/java/it/Category5Suite.java index fbe817e6588..b7047fcc2de 100644 --- a/it/it-tests/src/test/java/it/Category5Suite.java +++ b/it/it-tests/src/test/java/it/Category5Suite.java @@ -19,7 +19,6 @@ */ package it; -import it.organization.RootTest; import it.serverSystem.ClusterTest; import it.serverSystem.RestartTest; import it.serverSystem.ServerSystemRestartingOrchestrator; @@ -46,8 +45,7 @@ import org.junit.runners.Suite; // update center UpdateCenterTest.class, RealmAuthenticationTest.class, - SsoAuthenticationTest.class, - RootTest.class + SsoAuthenticationTest.class }) public class Category5Suite { diff --git a/it/it-tests/src/test/java/it/Category6Suite.java b/it/it-tests/src/test/java/it/Category6Suite.java index d3ee5e44e75..edb69c482bf 100644 --- a/it/it-tests/src/test/java/it/Category6Suite.java +++ b/it/it-tests/src/test/java/it/Category6Suite.java @@ -20,6 +20,7 @@ package it; import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.http.HttpMethod; import it.issue.IssueTagsTest; import it.issue.OrganizationIssueAssignTest; import it.organization.BillingTest; @@ -27,6 +28,7 @@ import it.organization.OrganizationMembershipTest; import it.organization.OrganizationTest; import it.projectSearch.LeakProjectsPageTest; import it.projectSearch.SearchProjectsTest; +import it.organization.RootUserOnOrganizationTest; import it.qualityProfile.OrganizationQualityProfilesPageTest; import it.qualityProfile.QualityProfilesBuiltInTest; import it.uiExtension.OrganizationUiExtensionsTest; @@ -36,7 +38,6 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; -import static java.util.Collections.emptyMap; import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @@ -50,6 +51,7 @@ import static util.ItUtils.xooPlugin; OrganizationMembershipTest.class, OrganizationQualityProfilesPageTest.class, OrganizationTest.class, + RootUserOnOrganizationTest.class, OrganizationUiExtensionsTest.class, QualityProfilesBuiltInTest.class, BillingTest.class, @@ -73,6 +75,10 @@ public class Category6Suite { } public static void enableOrganizationsSupport() { - ORCHESTRATOR.getServer().post("api/organizations/enable_support", emptyMap()); + ORCHESTRATOR.getServer() + .newHttpCall("api/organizations/enable_support") + .setMethod(HttpMethod.POST) + .setAdminCredentials() + .execute(); } } diff --git a/it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java b/it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java index 3790627a7ce..af5b8e0b76b 100644 --- a/it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java +++ b/it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java @@ -50,7 +50,7 @@ import static it.Category6Suite.enableOrganizationsSupport; import static java.lang.String.format; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; -import static util.ItUtils.deleteOrganizationsIfExists; +import static util.ItUtils.deleteOrganizations; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.newOrganizationKey; import static util.ItUtils.restoreProfile; @@ -97,7 +97,7 @@ public class OrganizationIssueAssignTest { @After public void tearDown() throws Exception { userRule.deactivateUsers(ASSIGNEE_LOGIN, OTHER_LOGIN); - deleteOrganizationsIfExists(orchestrator, ORGANIZATION_KEY, OTHER_ORGANIZATION_KEY); + deleteOrganizations(orchestrator); } @Test diff --git a/it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java b/it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java index 96f275b940d..c6096c4ee5a 100644 --- a/it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java +++ b/it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java @@ -44,7 +44,7 @@ import util.user.UserRule; import static it.Category6Suite.enableOrganizationsSupport; import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; import static org.assertj.core.api.Assertions.assertThat; -import static util.ItUtils.deleteOrganizationsIfExists; +import static util.ItUtils.deleteOrganizations; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.newOrganizationKey; import static util.ItUtils.newUserWsClient; @@ -73,12 +73,12 @@ public class OrganizationMembershipTest { adminClient = newAdminWsClient(orchestrator); enableOrganizationsSupport(); setServerProperty(orchestrator, "sonar.organizations.anyoneCanCreate", "true"); - deleteOrganizationsIfExists(orchestrator, KEY); + deleteOrganizations(orchestrator); } @After public void tearDown() throws Exception { - deleteOrganizationsIfExists(orchestrator, KEY); + deleteOrganizations(orchestrator); } @Test diff --git a/it/it-tests/src/test/java/it/organization/OrganizationTest.java b/it/it-tests/src/test/java/it/organization/OrganizationTest.java index a9de4924d88..1a23e0f6262 100644 --- a/it/it-tests/src/test/java/it/organization/OrganizationTest.java +++ b/it/it-tests/src/test/java/it/organization/OrganizationTest.java @@ -58,7 +58,7 @@ import static java.util.Collections.singletonList; import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; -import static util.ItUtils.deleteOrganizationsIfExists; +import static util.ItUtils.deleteOrganizations; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.newUserWsClient; import static util.ItUtils.newWsClient; @@ -95,13 +95,13 @@ public class OrganizationTest { @Before public void setUp() throws Exception { resetSettings(orchestrator, null, SETTING_ANYONE_CAN_CREATE_ORGANIZATIONS); - deleteOrganizationsIfExists(orchestrator, KEY, "an-org"); + deleteOrganizations(orchestrator); userRule.deactivateUsers(USER_LOGIN); } @After public void tearDown() throws Exception { - deleteOrganizationsIfExists(orchestrator, KEY, "an-org"); + deleteOrganizations(orchestrator); } @Test @@ -275,6 +275,7 @@ public class OrganizationTest { @Test public void an_organization_member_can_analyze_project() { + assertThatOrganizationDoesNotExit(KEY); Organizations.Organization createdOrganization = adminOrganizationService.create(new CreateWsRequest.Builder() @@ -459,13 +460,14 @@ public class OrganizationTest { for (QualityProfiles.SearchWsResponse.QualityProfile profile : response.getProfilesList()) { assertThat(profile.getIsInherited()).isFalse(); assertThat(profile.getProjectCount()).isEqualTo(0); + assertThat(profile.getIsBuiltIn()).isTrue(); if (profile.getName().toLowerCase(Locale.ENGLISH).contains("empty")) { assertThat(profile.getActiveRuleCount()).isEqualTo(0); } else { assertThat(profile.getActiveRuleCount()).isGreaterThan(0); // that allows to check the Elasticsearch index of active rules Rules.SearchResponse activeRulesResponse = adminClient.rules().search(new org.sonarqube.ws.client.rule.SearchWsRequest().setActivation(true).setQProfile(profile.getKey())); - assertThat(activeRulesResponse.getTotal()).isEqualTo(profile.getActiveRuleCount()); + assertThat(activeRulesResponse.getTotal()).as("profile " + profile.getName()).isEqualTo(profile.getActiveRuleCount()); assertThat(activeRulesResponse.getRulesCount()).isEqualTo((int)profile.getActiveRuleCount()); } } diff --git a/it/it-tests/src/test/java/it/organization/RootTest.java b/it/it-tests/src/test/java/it/organization/RootUserOnOrganizationTest.java index 9dd3a3410a7..dbf4432593d 100644 --- a/it/it-tests/src/test/java/it/organization/RootTest.java +++ b/it/it-tests/src/test/java/it/organization/RootUserOnOrganizationTest.java @@ -20,55 +20,56 @@ package it.organization; import com.sonar.orchestrator.Orchestrator; +import it.Category6Suite; import java.sql.SQLException; -import java.util.Collections; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.ClassRule; import org.junit.Test; import org.sonarqube.ws.WsRoot; import org.sonarqube.ws.client.HttpException; import org.sonarqube.ws.client.WsClient; +import org.sonarqube.ws.client.user.SearchRequest; +import org.sonarqube.ws.client.user.UsersService; import util.user.UserRule; +import static it.Category6Suite.enableOrganizationsSupport; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.newUserWsClient; -import static util.ItUtils.newWsClient; -public class RootTest { +public class RootUserOnOrganizationTest { - private static Orchestrator orchestrator; + @ClassRule + public static Orchestrator orchestrator = Category6Suite.ORCHESTRATOR; private static UserRule userRule; @Before public void start() { - orchestrator = Orchestrator.builderEnv().build(); - orchestrator.start(); userRule = UserRule.from(orchestrator); } @After - public void stop() { - if (orchestrator != null) { - orchestrator.stop(); - userRule = null; - } + public void tearDown() throws Exception { + UsersService service = newAdminWsClient(orchestrator).users(); + service.search(SearchRequest.builder().build()).getUsersList() + .stream() + .filter(u -> !u.getLogin().equals("admin")) + .forEach(u -> { + userRule.deactivateUsers(u.getLogin()); + }); } - @Test - public void nobody_is_root_by_default() { - // anonymous - verifyHttpError(() -> newWsClient(orchestrator).rootService().search(), 403); - - // admin - verifyHttpError(() -> newAdminWsClient(orchestrator).rootService().search(), 403); + @BeforeClass + public static void enableOrganizations() throws Exception { + enableOrganizationsSupport(); } @Test public void system_administrator_is_flagged_as_root_when_he_enables_organization_support() { - enableOrganizationSupport(); assertThat(newAdminWsClient(orchestrator).rootService().search().getRootsList()) .extracting(WsRoot.Root::getLogin) .containsOnly(UserRule.ADMIN_LOGIN); @@ -76,7 +77,6 @@ public class RootTest { @Test public void a_root_can_flag_other_user_as_root() { - enableOrganizationSupport(); userRule.createUser("bar", "foo"); userRule.setRoot("bar"); @@ -87,13 +87,11 @@ public class RootTest { @Test public void last_root_can_not_be_unset_root() throws SQLException { - enableOrganizationSupport(); verifyHttpError(() -> newAdminWsClient(orchestrator).rootService().unsetRoot(UserRule.ADMIN_LOGIN), 400); } @Test public void root_can_be_set_and_unset_via_web_services() { - enableOrganizationSupport(); userRule.createUser("root1", "bar"); userRule.createUser("root2", "bar"); WsClient root1WsClient = newUserWsClient(orchestrator, "root1", "bar"); @@ -114,11 +112,7 @@ public class RootTest { // root2 can unset root itself as it's not the last root root2WsClient.rootService().unsetRoot("root2"); } - - private static void enableOrganizationSupport() { - orchestrator.getServer().post("api/organizations/enable_support", Collections.emptyMap()); - } - + private static void verifyHttpError(Runnable runnable, int expectedErrorCode) { try { runnable.run(); diff --git a/it/it-tests/src/test/java/it/organization/RootUserTest.java b/it/it-tests/src/test/java/it/organization/RootUserTest.java new file mode 100644 index 00000000000..2692f7bd347 --- /dev/null +++ b/it/it-tests/src/test/java/it/organization/RootUserTest.java @@ -0,0 +1,55 @@ +/* + * 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 it.organization; + +import com.sonar.orchestrator.Orchestrator; +import it.Category4Suite; +import org.junit.ClassRule; +import org.junit.Test; +import org.sonarqube.ws.client.HttpException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; +import static util.ItUtils.newAdminWsClient; +import static util.ItUtils.newWsClient; + +public class RootUserTest { + + @ClassRule + public static Orchestrator orchestrator = Category4Suite.ORCHESTRATOR; + + @Test + public void nobody_is_root_by_default() { + // anonymous + verifyHttpError(() -> newWsClient(orchestrator).rootService().search(), 403); + + // admin + verifyHttpError(() -> newAdminWsClient(orchestrator).rootService().search(), 403); + } + + private static void verifyHttpError(Runnable runnable, int expectedErrorCode) { + try { + runnable.run(); + fail("Ws Call should have failed with http code " + expectedErrorCode); + } catch (HttpException e) { + assertThat(e.code()).isEqualTo(expectedErrorCode); + } + } +} diff --git a/it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java b/it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java index b5a8501810b..0c57d7b2782 100644 --- a/it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java +++ b/it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java @@ -37,7 +37,7 @@ import pageobjects.Navigation; import static com.codeborne.selenide.Selenide.$; import static it.Category6Suite.enableOrganizationsSupport; -import static util.ItUtils.deleteOrganizationsIfExists; +import static util.ItUtils.deleteOrganizations; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.projectDir; import static util.selenium.Selenese.runSelenese; @@ -59,7 +59,7 @@ public class OrganizationQualityProfilesPageTest { @AfterClass public static void tearDown() throws Exception { - deleteOrganizationsIfExists(orchestrator, ORGANIZATION); + deleteOrganizations(orchestrator); } @Before diff --git a/it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java b/it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java index f405fc0d181..8b642f2dc52 100644 --- a/it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java +++ b/it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java @@ -33,7 +33,7 @@ import util.ItUtils; import static it.Category6Suite.enableOrganizationsSupport; import static org.assertj.core.api.Assertions.assertThat; -import static util.ItUtils.deleteOrganizationsIfExists; +import static util.ItUtils.deleteOrganizations; import static util.ItUtils.newAdminWsClient; import static util.ItUtils.newWsClient; @@ -56,8 +56,7 @@ public class RulesPerOrganizationTest { @AfterClass public static void tearDown() throws Exception { - deleteOrganizationsIfExists(orchestrator, ORGANIZATION_FOO); - deleteOrganizationsIfExists(orchestrator, ORGANIZATION_BAR); + deleteOrganizations(orchestrator); } private static void createOrganization(String organization) { diff --git a/it/it-tests/src/test/java/util/ItUtils.java b/it/it-tests/src/test/java/util/ItUtils.java index d3ad26424f6..526da26950f 100644 --- a/it/it-tests/src/test/java/util/ItUtils.java +++ b/it/it-tests/src/test/java/util/ItUtils.java @@ -372,10 +372,12 @@ public class ItUtils { return "key-" + randomAlphabetic(100); } - public static void deleteOrganizationsIfExists(Orchestrator orchestrator, String... organizationKeys) { - OrganizationService adminOrganizationService = newAdminWsClient(orchestrator).organizations(); - adminOrganizationService.search(SearchWsRequest.builder().setOrganizations(organizationKeys).build()).getOrganizationsList() - .forEach(organization -> adminOrganizationService.delete(organization.getKey())); + public static void deleteOrganizations(Orchestrator orchestrator) { + OrganizationService service = newAdminWsClient(orchestrator).organizations(); + service.search(SearchWsRequest.builder().build()).getOrganizationsList() + .stream() + .filter(o -> !o.getGuarded()) + .forEach(organization -> service.delete(organization.getKey())); } public static class ComponentNavigation { |