aboutsummaryrefslogtreecommitdiffstats
path: root/it/it-tests/src
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2017-06-06 15:38:03 +0200
committerEric Hartmann <hartmann.eric@gmail.com>2017-06-14 15:43:13 +0200
commit93ece4c32cb488af46855b3ee9d53d7fd9e787b8 (patch)
tree8070f87eff0941973158f8919520f108244622c2 /it/it-tests/src
parent4c9807a6d016bd7da4419f21c8a736f5f014493d (diff)
downloadsonarqube-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.java3
-rw-r--r--it/it-tests/src/test/java/it/Category5Suite.java4
-rw-r--r--it/it-tests/src/test/java/it/Category6Suite.java10
-rw-r--r--it/it-tests/src/test/java/it/issue/OrganizationIssueAssignTest.java4
-rw-r--r--it/it-tests/src/test/java/it/organization/OrganizationMembershipTest.java6
-rw-r--r--it/it-tests/src/test/java/it/organization/OrganizationTest.java10
-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.java55
-rw-r--r--it/it-tests/src/test/java/it/qualityProfile/OrganizationQualityProfilesPageTest.java4
-rw-r--r--it/it-tests/src/test/java/it/rule/RulesPerOrganizationTest.java5
-rw-r--r--it/it-tests/src/test/java/util/ItUtils.java10
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 {