diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java index d4a6ef33d06ee07c20e524ee7b059b19d5f2d68c..80b573230e678bd67ac13cd5415b4a08c69ed3a3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/TopMenu.java @@ -51,6 +51,7 @@ public class TopMenu extends LayoutContainer { ADMINISTRATION_MENU_MANAGE_GROUPS, ADMINISTRATION_MENU_MANAGE_TYPES, + ADMINISTRATION_MENU_MANAGE_AUTHORIZATION, AUTHORIZATION_MENU_USERS, AUTHORIZATION_MENU_ROLES, AUTHORIZATION_MENU_AUTHORIZATION_GROUPS, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/administration/AuthorizationMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/administration/AuthorizationMenu.java index 849cc38448277216fe7ae5f0f54e325c82dae383..2189acb2e1d835fcdc38e929d2d404031f9f4bc5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/administration/AuthorizationMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/administration/AuthorizationMenu.java @@ -36,6 +36,7 @@ public class AuthorizationMenu extends MenuItem public AuthorizationMenu(IMessageProvider messageProvider, ComponentProvider componentProvider) { super(messageProvider.getMessage(Dict.MENU_AUTHORIZATION)); + setId(TopMenu.ActionMenuKind.ADMINISTRATION_MENU_MANAGE_AUTHORIZATION.toString()); Menu menu = new Menu(); menu.add(new ActionMenu(TopMenu.ActionMenuKind.AUTHORIZATION_MENU_USERS, messageProvider, diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/AuthorizationTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/AuthorizationTest.java index 3444733873a4a0257a32c67e240d37450c2d1e6d..a20021fcb5ef26784a17033a5949457a1345bbab 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/AuthorizationTest.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/AuthorizationTest.java @@ -9,6 +9,7 @@ import ch.systemsx.cisd.openbis.uitest.infra.User; import ch.systemsx.cisd.openbis.uitest.page.HomePage; import ch.systemsx.cisd.openbis.uitest.page.InvalidPasswordDialog; import ch.systemsx.cisd.openbis.uitest.page.LoginPage; +import ch.systemsx.cisd.openbis.uitest.page.RoleAssignmentBrowser; @Test(groups = { "no-login" }) @@ -25,7 +26,7 @@ public class AuthorizationTest extends SeleniumTest @Test public void loginFailsWithValidUserNameAndInvalidPassword() throws Exception { - openbis.login(User.ADMIN.getName(), "invalid"); + openbis.login(User.ADMIN.getName() + "begfga", "invalid"); get(InvalidPasswordDialog.class).dismiss(); } @@ -39,4 +40,14 @@ public class AuthorizationTest extends SeleniumTest assertThat(browser(), isShowing(LoginPage.class)); } + @Test + public void adminCanOpenRoleAssignmentBrowser() throws Exception + { + openbis.login(User.ADMIN); + openbis.browseToRoleAssignmentBrowser(); + + assertThat(browser(), isShowing(RoleAssignmentBrowser.class)); + + openbis.logout(); + } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java index eacb14a48baeb274742b66bc52f419bc897ac80b..75dbd2ca11d316d0e9605150e01e79453bd91d7c 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java @@ -21,6 +21,7 @@ import ch.systemsx.cisd.openbis.uitest.page.AddSpaceDialog; import ch.systemsx.cisd.openbis.uitest.page.EditSampleTypeDialog; import ch.systemsx.cisd.openbis.uitest.page.LoginPage; import ch.systemsx.cisd.openbis.uitest.page.PrivatePage; +import ch.systemsx.cisd.openbis.uitest.page.RoleAssignmentBrowser; import ch.systemsx.cisd.openbis.uitest.page.SampleBrowser; import ch.systemsx.cisd.openbis.uitest.page.SampleTypeBrowser; import ch.systemsx.cisd.openbis.uitest.page.SpaceBrowser; @@ -102,6 +103,11 @@ public class ApplicationRunner return getMenus().browse().samples(); } + public RoleAssignmentBrowser browseToRoleAssignmentBrowser() + { + return getMenus().admin().authorization().roles(); + } + public void closeAllTabs() { getMenus().closeTabs(); diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/SeleniumTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/SeleniumTest.java index 7c750e45ea4b7b0ec988b534198933d14e02811f..624932ba49beb8b17e174476364f5c6a396a68f8 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/SeleniumTest.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/SeleniumTest.java @@ -29,7 +29,6 @@ import java.util.concurrent.TimeUnit; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeMatcher; -import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -56,7 +55,7 @@ public abstract class SeleniumTest protected ApplicationRunner openbis; - @BeforeSuite + // @BeforeSuite public void initWebDriver() { System.setProperty("webdriver.firefox.bin", @@ -69,17 +68,19 @@ public abstract class SeleniumTest delete(new File("targets/dist")); driver.manage().deleteAllCookies(); - driver.get("https://sprint-openbis.ethz.ch/openbis/"); - // driver.get("http://127.0.0.1:8888/ch.systemsx.cisd.openbis.OpenBIS/index.html?gwt.codesvr=127.0.0.1:9997"); + driver.get("http://127.0.0.1:8888/ch.systemsx.cisd.openbis.OpenBIS/index.html?gwt.codesvr=127.0.0.1:9997"); + } - try - { - driver.switchTo().alert().accept(); - } catch (NoAlertPresentException e) - { - } - this.loginAsAdmin(); - this.logout(); + @BeforeSuite + public void initWebDriverForCi() + { + driver = new FirefoxDriver(); + driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); + delete(new File("targets/dist")); + + driver.manage().deleteAllCookies(); + + driver.get("https://sprint-openbis.ethz.ch/openbis/"); } @AfterSuite diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AdminMenu.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AdminMenu.java index a418258a59b55c2fc5b4e7319d712ed8eeedf1b1..73d628c432a4e0f9bfc79ab2c527234bb8d537cb 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AdminMenu.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AdminMenu.java @@ -34,6 +34,9 @@ public class AdminMenu extends PrivatePage @FindBy(id = "openbis_top-menu_SAMPLE_MENU_TYPES") private WebElement sampleTypes; + @FindBy(id = "ADMINISTRATION_MENU_MANAGE_AUTHORIZATION") + private WebElement authorization; + public SpaceBrowser spaces() { spaces.click(); @@ -52,4 +55,11 @@ public class AdminMenu extends PrivatePage sampleTypes.click(); return get(SampleTypeBrowser.class); } + + public AuthorizationMenu authorization() + { + Actions builder = new Actions(SeleniumTest.driver); + builder.moveToElement(authorization).build().perform(); + return get(AuthorizationMenu.class); + } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AuthorizationMenu.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AuthorizationMenu.java new file mode 100644 index 0000000000000000000000000000000000000000..a1aa3029ab7d804ea0d1c6d4a2f467c4523dae9b --- /dev/null +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/AuthorizationMenu.java @@ -0,0 +1,33 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.uitest.page; + +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class AuthorizationMenu extends PrivatePage +{ + + @FindBy(id = "openbis_top-menu_AUTHORIZATION_MENU_ROLES") + private WebElement roles; + + public RoleAssignmentBrowser roles() + { + roles.click(); + return get(RoleAssignmentBrowser.class); + } +} diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/RoleAssignmentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/RoleAssignmentBrowser.java new file mode 100644 index 0000000000000000000000000000000000000000..7b5a106d2e01b63981008eb13058de47c02a4c79 --- /dev/null +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/RoleAssignmentBrowser.java @@ -0,0 +1,57 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.uitest.page; + +import java.util.List; + +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class RoleAssignmentBrowser extends BrowserPage +{ + + @FindBy(id = "openbis_role-browser_assign-button") + private WebElement assignRoleButton; + + /* + @FindBys( + { + @FindBy(id = "openbis_sample-type-browser-grid"), + @FindBy(xpath = "//*[contains(@class, \"x-grid\") and contains(@class, \"-header \")]") }) + */ + private List<WebElement> columns; + + /* + @FindBys( + { + @FindBy(id = "openbis_sample-type-browser-grid"), + @FindBy(xpath = "//*[contains(@class, \"x-grid\") and contains(@class, \"-col \")]") }) + */ + private List<WebElement> data; + + @Override + protected List<WebElement> getColumns() + { + return this.columns; + } + + @Override + protected List<WebElement> getData() + { + return this.data; + } +} \ No newline at end of file