aboutsummaryrefslogtreecommitdiffstats
path: root/it
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2017-04-28 17:04:22 +0200
committerStas Vilchik <stas-vilchik@users.noreply.github.com>2017-05-02 14:45:47 +0200
commitcfa382b33eb58413abcf84635d5e45d1f21c4f21 (patch)
tree580acac50f46303d34b4605e44111420ed5637ad /it
parent9165e7a3a22bb6790a85d9b78ea679ce7559bea4 (diff)
downloadsonarqube-cfa382b33eb58413abcf84635d5e45d1f21c4f21.tar.gz
sonarqube-cfa382b33eb58413abcf84635d5e45d1f21c4f21.zip
SONAR-9165 Allow to change project visibility on its permissions page
Diffstat (limited to 'it')
-rw-r--r--it/it-tests/src/test/java/it/projectAdministration/ProjectPermissionsTest.java25
-rw-r--r--it/it-tests/src/test/java/pageobjects/Navigation.java5
-rw-r--r--it/it-tests/src/test/java/pageobjects/ProjectPermissionsPage.java54
3 files changed, 81 insertions, 3 deletions
diff --git a/it/it-tests/src/test/java/it/projectAdministration/ProjectPermissionsTest.java b/it/it-tests/src/test/java/it/projectAdministration/ProjectPermissionsTest.java
index c2dac064a8a..8df89782810 100644
--- a/it/it-tests/src/test/java/it/projectAdministration/ProjectPermissionsTest.java
+++ b/it/it-tests/src/test/java/it/projectAdministration/ProjectPermissionsTest.java
@@ -22,8 +22,12 @@ package it.projectAdministration;
import com.sonar.orchestrator.Orchestrator;
import com.sonar.orchestrator.build.SonarScanner;
import it.Category1Suite;
+import org.junit.BeforeClass;
import org.junit.ClassRule;
+import org.junit.Rule;
import org.junit.Test;
+import pageobjects.Navigation;
+import pageobjects.ProjectPermissionsPage;
import static util.ItUtils.projectDir;
import static util.selenium.Selenese.runSelenese;
@@ -33,15 +37,30 @@ public class ProjectPermissionsTest {
@ClassRule
public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR;
- @Test
- public void test_project_permissions_page_shows_only_single_project() throws Exception {
+ @Rule
+ public Navigation nav = Navigation.get(orchestrator);
+
+ @BeforeClass
+ public static void beforeClass() {
executeBuild("project-permissions-project", "Test Project");
executeBuild("project-permissions-project-2", "Another Test Project");
+ }
+ @Test
+ public void test_project_permissions_page_shows_only_single_project() throws Exception {
runSelenese(orchestrator, "/projectAdministration/ProjectPermissionsTest/test_project_permissions_page_shows_only_single_project.html");
}
- private void executeBuild(String projectKey, String projectName) {
+ @Test
+ public void change_project_visibility() {
+ ProjectPermissionsPage page = nav.logIn().asAdmin().openProjectPermissions("project-permissions-project");
+ page
+ .shouldBePublic()
+ .turnToPrivate()
+ .turnToPublic();
+ }
+
+ private static void executeBuild(String projectKey, String projectName) {
orchestrator.executeBuild(
SonarScanner.create(projectDir("shared/xoo-sample"))
.setProjectKey(projectKey)
diff --git a/it/it-tests/src/test/java/pageobjects/Navigation.java b/it/it-tests/src/test/java/pageobjects/Navigation.java
index 668c1180c30..412698a7ea4 100644
--- a/it/it-tests/src/test/java/pageobjects/Navigation.java
+++ b/it/it-tests/src/test/java/pageobjects/Navigation.java
@@ -131,6 +131,11 @@ public class Navigation extends ExternalResource {
return open("/account/notifications", NotificationsPage.class);
}
+ public ProjectPermissionsPage openProjectPermissions(String projectKey) {
+ String url = "/project_roles?id=" + projectKey;
+ return open(url, ProjectPermissionsPage.class);
+ }
+
public LoginPage openLogin() {
return open("/sessions/login", LoginPage.class);
}
diff --git a/it/it-tests/src/test/java/pageobjects/ProjectPermissionsPage.java b/it/it-tests/src/test/java/pageobjects/ProjectPermissionsPage.java
new file mode 100644
index 00000000000..11f23543177
--- /dev/null
+++ b/it/it-tests/src/test/java/pageobjects/ProjectPermissionsPage.java
@@ -0,0 +1,54 @@
+/*
+ * 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 pageobjects;
+
+import static com.codeborne.selenide.Condition.exist;
+import static com.codeborne.selenide.Condition.visible;
+import static com.codeborne.selenide.Selenide.$;
+
+public class ProjectPermissionsPage {
+
+ public ProjectPermissionsPage() {
+ $("#project-permissions-page").should(exist);
+ }
+
+ public ProjectPermissionsPage shouldBePublic() {
+ $("#visibility-public .icon-radio.is-checked").shouldBe(visible);
+ return this;
+ }
+
+ public ProjectPermissionsPage shouldBePrivate() {
+ $("#visibility-private .icon-radio.is-checked").shouldBe(visible);
+ return this;
+ }
+
+ public ProjectPermissionsPage turnToPublic() {
+ $("#visibility-public").click();
+ $("#confirm-turn-to-public").click();
+ shouldBePublic();
+ return this;
+ }
+
+ public ProjectPermissionsPage turnToPrivate() {
+ $("#visibility-private").click();
+ shouldBePrivate();
+ return this;
+ }
+}