diff options
author | Pascal Mugnier <pascal.mugnier@sonarsource.com> | 2018-03-29 16:40:55 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-04-05 20:20:47 +0200 |
commit | d11fb8ece1a77f028a7ba95004df46ce725a0c00 (patch) | |
tree | b987f741d2bd1a42eea69694f631059971465fb3 /tests | |
parent | e2e069237203558e6db52f946d6b4564f30652fe (diff) | |
download | sonarqube-d11fb8ece1a77f028a7ba95004df46ce725a0c00.tar.gz sonarqube-d11fb8ece1a77f028a7ba95004df46ce725a0c00.zip |
SONAR-10039 Ease changing of password settings
Diffstat (limited to 'tests')
-rw-r--r-- | tests/build.gradle | 1 | ||||
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/settings/SettingsSuite.java | 43 | ||||
-rw-r--r-- | tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java | 128 |
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); + } + +} |