diff options
author | Grégoire Aubert <gregoire.aubert@sonarsource.com> | 2017-04-11 14:47:02 +0200 |
---|---|---|
committer | Grégoire Aubert <gregaubert@users.noreply.github.com> | 2017-04-12 16:36:29 +0200 |
commit | 7b341707990b0ab9ab1c51cf19a7675af9507578 (patch) | |
tree | e1ea07f4c5871a19f7db14f17ff452bf35c83ef0 | |
parent | b3c2e0d524cd316326d642247972e12d00de0d12 (diff) | |
download | sonarqube-7b341707990b0ab9ab1c51cf19a7675af9507578.tar.gz sonarqube-7b341707990b0ab9ab1c51cf19a7675af9507578.zip |
SONAR-9110 Update page extensions IT's
4 files changed, 105 insertions, 1 deletions
diff --git a/it/it-plugins/ui-extensions-plugin/src/main/java/UiPageDefinition.java b/it/it-plugins/ui-extensions-plugin/src/main/java/UiPageDefinition.java index 52f22d3f67a..6bcddd7c721 100644 --- a/it/it-plugins/ui-extensions-plugin/src/main/java/UiPageDefinition.java +++ b/it/it-plugins/ui-extensions-plugin/src/main/java/UiPageDefinition.java @@ -43,6 +43,7 @@ import org.sonar.api.web.page.Page; import org.sonar.api.web.page.PageDefinition; import static org.sonar.api.web.page.Page.Scope.COMPONENT; +import static org.sonar.api.web.page.Page.Scope.ORGANIZATION; public class UiPageDefinition implements PageDefinition { @Override @@ -51,6 +52,8 @@ public class UiPageDefinition implements PageDefinition { .addPage(Page.builder("uiextensionsplugin/global_page").setName("Global Page").build()) .addPage(Page.builder("uiextensionsplugin/global_admin_page").setName("Global Admin Page").setAdmin(true).build()) .addPage(Page.builder("uiextensionsplugin/project_page").setName("Project Page").setScope(COMPONENT).build()) - .addPage(Page.builder("uiextensionsplugin/project_admin_page").setName("Project Admin Page").setScope(COMPONENT).setAdmin(true).build()); + .addPage(Page.builder("uiextensionsplugin/project_admin_page").setName("Project Admin Page").setScope(COMPONENT).setAdmin(true).build()) + .addPage(Page.builder("uiextensionsplugin/organization_page").setName("Organization Page").setScope(ORGANIZATION).build()) + .addPage(Page.builder("uiextensionsplugin/organization_admin_page").setName("Organization Admin Page").setScope(ORGANIZATION).setAdmin(true).build()); } } diff --git a/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_admin_page.js b/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_admin_page.js new file mode 100644 index 00000000000..a3f740d8823 --- /dev/null +++ b/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_admin_page.js @@ -0,0 +1,4 @@ +window.registerExtension('uiextensionsplugin/organization_admin_page', function (options) { + options.el.textContent = 'uiextensionsplugin/organization_admin_page'; + return function () {}; +}); diff --git a/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_page.js b/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_page.js new file mode 100644 index 00000000000..50c7e242f12 --- /dev/null +++ b/it/it-plugins/ui-extensions-plugin/src/main/resources/static/organization_page.js @@ -0,0 +1,4 @@ +window.registerExtension('uiextensionsplugin/organization_page', function (options) { + options.el.textContent = 'uiextensionsplugin/organization_page'; + return function () {}; +});
\ No newline at end of file diff --git a/it/it-tests/src/test/java/it/uiExtension/OrganizationUiExtensionsTest.java b/it/it-tests/src/test/java/it/uiExtension/OrganizationUiExtensionsTest.java new file mode 100644 index 00000000000..e9f1e3fc08e --- /dev/null +++ b/it/it-tests/src/test/java/it/uiExtension/OrganizationUiExtensionsTest.java @@ -0,0 +1,93 @@ +/* + * 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 it.uiExtension; + +import com.codeborne.selenide.Condition; +import com.sonar.orchestrator.Orchestrator; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.openqa.selenium.By; +import org.sonarqube.ws.client.WsClient; +import org.sonarqube.ws.client.organization.CreateWsRequest; +import pageobjects.Navigation; + +import static com.codeborne.selenide.Condition.text; +import static com.codeborne.selenide.Selenide.$; +import static com.codeborne.selenide.WebDriverRunner.url; +import static java.util.Collections.emptyMap; +import static java.util.Locale.ENGLISH; +import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; +import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.newAdminWsClient; +import static util.ItUtils.pluginArtifact; +import static util.ItUtils.xooPlugin; + +public class OrganizationUiExtensionsTest { + + @ClassRule + public static final Orchestrator orchestrator = Orchestrator.builderEnv() + .addPlugin(xooPlugin()) + .addPlugin(pluginArtifact("ui-extensions-plugin")) + .build(); + + @Rule + public Navigation nav = Navigation.get(orchestrator); + + private static WsClient adminClient; + + @BeforeClass + public static void setUp() throws Exception { + orchestrator.resetData(); + adminClient = newAdminWsClient(orchestrator); + orchestrator.getServer().post("api/organizations/enable_support", emptyMap()); + } + + @Test + public void organization_page() { + String orgKey = createOrganization(); + nav.open("/organizations/" + orgKey + "/projects"); + + $("#organization-navigation-more").click(); + $(By.linkText("Organization Page")).shouldBe(Condition.visible).click(); + + assertThat(url()).contains("uiextensionsplugin/organization_page"); + $("body").shouldHave(text("uiextensionsplugin/organization_page")); + } + + @Test + public void organization_admin_page() { + String orgKey = createOrganization(); + nav.logIn().asAdmin().open("/organizations/" + orgKey + "/projects"); + + $("#context-navigation a.navbar-admin-link").click(); + $(By.linkText("Organization Admin Page")).shouldBe(Condition.visible).click(); + + assertThat(url()).contains("uiextensionsplugin/organization_admin_page"); + $("body").shouldHave(text("uiextensionsplugin/organization_admin_page")); + } + + private static String createOrganization() { + String keyAndName = randomAlphabetic(32).toLowerCase(ENGLISH); + adminClient.organizations().create(new CreateWsRequest.Builder().setKey(keyAndName).setName(keyAndName).build()).getOrganization(); + return keyAndName; + } +} |