aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPascal Mugnier <pascal.mugnier@sonarsource.com>2018-03-29 16:40:55 +0200
committerSonarTech <sonartech@sonarsource.com>2018-04-05 20:20:47 +0200
commitd11fb8ece1a77f028a7ba95004df46ce725a0c00 (patch)
treeb987f741d2bd1a42eea69694f631059971465fb3 /tests
parente2e069237203558e6db52f946d6b4564f30652fe (diff)
downloadsonarqube-d11fb8ece1a77f028a7ba95004df46ce725a0c00.tar.gz
sonarqube-d11fb8ece1a77f028a7ba95004df46ce725a0c00.zip
SONAR-10039 Ease changing of password settings
Diffstat (limited to 'tests')
-rw-r--r--tests/build.gradle1
-rw-r--r--tests/src/test/java/org/sonarqube/tests/settings/SettingsSuite.java43
-rw-r--r--tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java128
3 files changed, 172 insertions, 0 deletions
diff --git a/tests/build.gradle b/tests/build.gradle
index ae2b73cf2cc..666130b7e6f 100644
--- a/tests/build.gradle
+++ b/tests/build.gradle
@@ -102,6 +102,7 @@ task integrationTest(type: Test) {
includeTestsMatching 'org.sonarqube.tests.authorization.*Suite'
includeTestsMatching 'org.sonarqube.tests.measure.*Suite'
includeTestsMatching 'org.sonarqube.tests.qualityGate.*Suite'
+ includeTestsMatching 'org.sonarqube.tests.settings.*Suite'
includeTestsMatching 'org.sonarqube.tests.source.*Suite'
break
case 'Category2':
diff --git a/tests/src/test/java/org/sonarqube/tests/settings/SettingsSuite.java b/tests/src/test/java/org/sonarqube/tests/settings/SettingsSuite.java
new file mode 100644
index 00000000000..0b73df2a436
--- /dev/null
+++ b/tests/src/test/java/org/sonarqube/tests/settings/SettingsSuite.java
@@ -0,0 +1,43 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 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.settings;
+
+import com.sonar.orchestrator.Orchestrator;
+import org.junit.ClassRule;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import util.ItUtils;
+
+import static util.ItUtils.xooPlugin;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ValidatorsTest.class
+})
+public class SettingsSuite {
+
+ @ClassRule
+ public static final Orchestrator ORCHESTRATOR = ItUtils.newOrchestratorBuilder()
+
+ .addPlugin(xooPlugin())
+
+ .build();
+
+}
diff --git a/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java b/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java
new file mode 100644
index 00000000000..99bd3191ce9
--- /dev/null
+++ b/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java
@@ -0,0 +1,128 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 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.settings;
+
+import com.sonar.orchestrator.Orchestrator;
+import com.sonar.orchestrator.build.SonarScanner;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonarqube.qa.util.Tester;
+import org.sonarqube.qa.util.pageobjects.settings.SettingsPage;
+import org.sonarqube.tests.component.ComponentSuite;
+import org.sonarqube.ws.Users;
+
+import static util.ItUtils.projectDir;
+
+public class ValidatorsTest {
+
+ private Users.CreateWsResponse.User adminUser;
+
+ @ClassRule
+ public static Orchestrator orchestrator = ComponentSuite.ORCHESTRATOR;
+
+ @Rule
+ public Tester tester = new Tester(orchestrator).disableOrganizations();
+
+ @Before
+ public void initUsers() {
+ adminUser = tester.users().generateAdministrator(u -> u.setLogin("admin-user").setPassword("admin-user"));
+ tester.users().generate(u -> u.setLogin("random-user").setPassword("random-user"));
+ }
+
+ @Test
+ public void main_settings_simple_value() {
+ SettingsPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin())
+ .openSettings(null);
+ tester.wsClient().users().skipOnboardingTutorial();
+
+ String elementSelector = "sonar.dbcleaner.hoursBeforeKeepingOnlyOneSnapshotByDay";
+ page.assertSettingValueIsNotedAsDefault(elementSelector)
+ .changeSettingValue(elementSelector, "1")
+ .assertSettingValueCanBeSaved(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+
+ page.sendDeleteKeyToSettingField(elementSelector)
+ .assertSettingValueCannotBeSaved(elementSelector)
+ .assertSettingValueCanBeReset(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+ }
+
+ @Test
+ public void main_settings_complex_value() {
+ SettingsPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin())
+ .openSettings(null);
+ tester.wsClient().users().skipOnboardingTutorial();
+
+ String elementSelector = "sonar.preview.excludePlugins";
+ page.assertSettingValueIsNotedAsDefault(elementSelector)
+ .removeFirstValue(elementSelector)
+ .assertSettingValueCanBeSaved(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+
+ page.clickOnCancel(elementSelector).assertSettingValueIsNotedAsDefault(elementSelector);
+ }
+
+ @Test
+ public void project_settings_simple_value() {
+ analyzeSample();
+
+ SettingsPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin())
+ .openSettings("sample");
+ tester.wsClient().users().skipOnboardingTutorial();
+
+ String elementSelector = "sonar.dbcleaner.hoursBeforeKeepingOnlyOneSnapshotByDay";
+ page.assertSettingValueIsNotedAsDefault(elementSelector)
+ .changeSettingValue(elementSelector, "1")
+ .assertSettingValueCanBeSaved(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+
+ page.sendDeleteKeyToSettingField(elementSelector)
+ .assertSettingValueCannotBeSaved(elementSelector)
+ .assertSettingValueCanBeReset(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+ }
+
+ @Test
+ public void project_settings_complex_value() {
+ analyzeSample();
+
+ SettingsPage page = tester.openBrowser().logIn().submitCredentials(adminUser.getLogin())
+ .openSettings("sample");
+ tester.wsClient().users().skipOnboardingTutorial();
+
+ String elementSelector = "sonar.issue.ignore.allfile";
+ page.openCategory("Analysis Scope")
+ .changeSettingValue(elementSelector, "foo")
+ .changeSettingValue(elementSelector, 1, "bar")
+ .assertSettingValueCanBeSaved(elementSelector)
+ .assertSettingValueCanBeCanceled(elementSelector);
+
+ page.clickOnCancel(elementSelector).assertInputCount(elementSelector, 1);
+ }
+
+ private void analyzeSample() {
+ SonarScanner scan = SonarScanner.create(projectDir("shared/xoo-sample"))
+ .setProperty("sonar.cpd.exclusions", "**/*");
+ orchestrator.executeBuild(scan);
+ }
+
+}