aboutsummaryrefslogtreecommitdiffstats
path: root/it/it-tests/src
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2017-05-02 10:15:46 +0200
committerStas Vilchik <stas-vilchik@users.noreply.github.com>2017-05-02 14:45:47 +0200
commitd0a3c62a54a9b8070087a1dd2ca03d885998b6d3 (patch)
tree3a44d1f66da25f7a17fffc324116e06177e09dab /it/it-tests/src
parent2d9e5533515dd5969897ba1ad3435fea27da28f0 (diff)
downloadsonarqube-d0a3c62a54a9b8070087a1dd2ca03d885998b6d3.tar.gz
sonarqube-d0a3c62a54a9b8070087a1dd2ca03d885998b6d3.zip
SONAR-9167 Allow to set a visibility when creating a project
Diffstat (limited to 'it/it-tests/src')
-rw-r--r--it/it-tests/src/test/java/it/administration/ProjectsAdministrationTest.java38
-rw-r--r--it/it-tests/src/test/java/pageobjects/Navigation.java4
-rw-r--r--it/it-tests/src/test/java/pageobjects/ProjectsManagementPage.java51
3 files changed, 87 insertions, 6 deletions
diff --git a/it/it-tests/src/test/java/it/administration/ProjectsAdministrationTest.java b/it/it-tests/src/test/java/it/administration/ProjectsAdministrationTest.java
index c574563a4ae..b0c86666fa9 100644
--- a/it/it-tests/src/test/java/it/administration/ProjectsAdministrationTest.java
+++ b/it/it-tests/src/test/java/it/administration/ProjectsAdministrationTest.java
@@ -27,13 +27,15 @@ import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
+import org.sonarqube.ws.WsComponents;
+import org.sonarqube.ws.client.component.SearchProjectsRequest;
import org.sonarqube.ws.client.permission.RemoveGroupWsRequest;
import org.sonarqube.ws.client.project.UpdateVisibilityRequest;
import pageobjects.Navigation;
+import pageobjects.ProjectsManagementPage;
import util.ItUtils;
-import static com.codeborne.selenide.Condition.text;
-import static com.codeborne.selenide.Selenide.$;
+import static org.assertj.core.api.Assertions.assertThat;
import static util.ItUtils.newAdminWsClient;
import static util.ItUtils.projectDir;
@@ -58,10 +60,34 @@ public class ProjectsAdministrationTest {
// Remove 'Admin' permission for admin group on project 2 -> No one can access or admin this project, expect System Admin
newAdminWsClient(orchestrator).permissions().removeGroup(new RemoveGroupWsRequest().setProjectKey("sample2").setGroupName("sonar-administrators").setPermission("admin"));
- nav.logIn().asAdmin().open("/projects_admin");
- $(".data.zebra")
- .shouldHave(text("sample1"))
- .shouldHave(text("sample2"));
+ nav.logIn().asAdmin().openProjectsManagement()
+ .shouldHaveProject("sample1")
+ .shouldHaveProject("sample2");
+ }
+
+ @Test
+ public void create_public_project() {
+ createProjectAndVerify("public");
+ }
+
+ @Test
+ public void create_private_project() {
+ createProjectAndVerify("private");
+ }
+
+ private void createProjectAndVerify(String visibility) {
+ ProjectsManagementPage page = nav.logIn().asAdmin().openProjectsManagement();
+ page
+ .shouldHaveProjectsCount(0)
+ .createProject("foo", "foo", visibility)
+ .shouldHaveProjectsCount(1);
+
+ WsComponents.SearchProjectsWsResponse response = newAdminWsClient(orchestrator).components().searchProjects(
+ SearchProjectsRequest.builder().build());
+ assertThat(response.getComponentsCount()).isEqualTo(1);
+ assertThat(response.getComponents(0).getKey()).isEqualTo("foo");
+ assertThat(response.getComponents(0).getName()).isEqualTo("foo");
+ assertThat(response.getComponents(0).getVisibility()).isEqualTo(visibility);
}
}
diff --git a/it/it-tests/src/test/java/pageobjects/Navigation.java b/it/it-tests/src/test/java/pageobjects/Navigation.java
index 412698a7ea4..09474474a04 100644
--- a/it/it-tests/src/test/java/pageobjects/Navigation.java
+++ b/it/it-tests/src/test/java/pageobjects/Navigation.java
@@ -136,6 +136,10 @@ public class Navigation extends ExternalResource {
return open(url, ProjectPermissionsPage.class);
}
+ public ProjectsManagementPage openProjectsManagement() {
+ return open("/projects_admin", ProjectsManagementPage.class);
+ }
+
public LoginPage openLogin() {
return open("/sessions/login", LoginPage.class);
}
diff --git a/it/it-tests/src/test/java/pageobjects/ProjectsManagementPage.java b/it/it-tests/src/test/java/pageobjects/ProjectsManagementPage.java
new file mode 100644
index 00000000000..2a937338dfa
--- /dev/null
+++ b/it/it-tests/src/test/java/pageobjects/ProjectsManagementPage.java
@@ -0,0 +1,51 @@
+/*
+ * 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.text;
+import static com.codeborne.selenide.Selenide.$;
+import static com.codeborne.selenide.Selenide.$$;
+
+public class ProjectsManagementPage {
+
+ public ProjectsManagementPage() {
+ $("#projects-management-page").should(exist);
+ }
+
+ public ProjectsManagementPage shouldHaveProjectsCount(int count) {
+ $$("#projects-management-page-projects tr").shouldHaveSize(count);
+ return this;
+ }
+
+ public ProjectsManagementPage shouldHaveProject(String key) {
+ $("#projects-management-page-projects").shouldHave(text(key));
+ return this;
+ }
+
+ public ProjectsManagementPage createProject(String key, String name, String visibility) {
+ $("#create-project").click();
+ $("#create-project-name").val(key);
+ $("#create-project-key").val(name);
+ $("#visibility-" + visibility).click();
+ $("#create-project-submit").submit();
+ return this;
+ }
+}