diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2017-05-02 10:15:46 +0200 |
---|---|---|
committer | Stas Vilchik <stas-vilchik@users.noreply.github.com> | 2017-05-02 14:45:47 +0200 |
commit | d0a3c62a54a9b8070087a1dd2ca03d885998b6d3 (patch) | |
tree | 3a44d1f66da25f7a17fffc324116e06177e09dab /it/it-tests/src | |
parent | 2d9e5533515dd5969897ba1ad3435fea27da28f0 (diff) | |
download | sonarqube-d0a3c62a54a9b8070087a1dd2ca03d885998b6d3.tar.gz sonarqube-d0a3c62a54a9b8070087a1dd2ca03d885998b6d3.zip |
SONAR-9167 Allow to set a visibility when creating a project
Diffstat (limited to 'it/it-tests/src')
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; + } +} |