From 73baf7e758f3bf4ab848b1fa6318222db4332995 Mon Sep 17 00:00:00 2001 From: Dennis Aulenbacher Date: Wed, 12 Aug 2020 01:44:23 +0200 Subject: [PATCH] bug5239: new integration test, testing WildcardPermission creation --- .../usermanagement/UserManagementPanelPO.java | 5 ++ .../WildcardPermissionPanelPO.java | 54 +++++++++++++++++++ .../TestPermissionCreation.java | 42 +++++++++++++++ .../permissions/WildcardPermissionPanel.java | 3 ++ ...PermissionWithSecurityDTOTableWrapper.java | 1 + 5 files changed, 105 insertions(+) create mode 100644 java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/WildcardPermissionPanelPO.java create mode 100644 java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/usermanagement/TestPermissionCreation.java diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/UserManagementPanelPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/UserManagementPanelPO.java index 7d6b754154e..d601d2f1629 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/UserManagementPanelPO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/UserManagementPanelPO.java @@ -70,4 +70,9 @@ public class UserManagementPanelPO extends PageArea { table.selectEntry(findUser); } } + + public WildcardPermissionPanelPO getUserPermissionsPO() { + final WebElement userRoles = findElementBySeleniumId(this.driver, "WildcardPermissionPanel"); + return new WildcardPermissionPanelPO(this.driver, userRoles); + } } diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/WildcardPermissionPanelPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/WildcardPermissionPanelPO.java new file mode 100644 index 00000000000..0567d361e27 --- /dev/null +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/usermanagement/WildcardPermissionPanelPO.java @@ -0,0 +1,54 @@ +package com.sap.sailing.selenium.pages.adminconsole.usermanagement; + +import org.openqa.selenium.ElementNotSelectableException; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import com.sap.sailing.selenium.core.BySeleniumId; +import com.sap.sailing.selenium.core.FindBy; +import com.sap.sailing.selenium.pages.PageArea; +import com.sap.sailing.selenium.pages.gwt.CellTablePO; +import com.sap.sailing.selenium.pages.gwt.DataEntryPO; +import com.sap.sailing.selenium.pages.gwt.GenericCellTablePO; +import com.sap.sailing.selenium.pages.gwt.SuggestBoxPO; + +public class WildcardPermissionPanelPO extends PageArea { + private static final String TABLE_PERMISSION_COLUMN = "Permission"; + @FindBy(how = BySeleniumId.class, using = "addPermissionButton") + private WebElement addRoleButton; + @FindBy(how = BySeleniumId.class, using = "suggestPermission") + private WebElement roleNameInput; + @FindBy(how = BySeleniumId.class, using = "WildcardPermissionWithSecurityDTOTable") + private WebElement roleTable; + + public WildcardPermissionPanelPO(WebDriver driver, WebElement element) { + super(driver, element); + } + + private CellTablePO getUserTable() { + return new GenericCellTablePO<>(this.driver, this.roleTable, DataEntryPO.class); + } + + public DataEntryPO findPermission(final String permissionName) { + final CellTablePO table = getUserTable(); + for (DataEntryPO entry : table.getEntries()) { + final String name = entry.getColumnContent(TABLE_PERMISSION_COLUMN); + if (permissionName.equals(name)) { + return entry; + } + } + return null; + } + + public void enterNewPermissionValue(String permissionName) { + SuggestBoxPO.create(driver, roleNameInput).appendText(permissionName); + } + + public void clickAddButtonOrThrow() { + if (!addRoleButton.isEnabled()) { + throw new ElementNotSelectableException("Add Button was disabled"); + } else { + addRoleButton.click(); + } + } +} diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/usermanagement/TestPermissionCreation.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/usermanagement/TestPermissionCreation.java new file mode 100644 index 00000000000..f187b61b83a --- /dev/null +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/usermanagement/TestPermissionCreation.java @@ -0,0 +1,42 @@ +package com.sap.sailing.selenium.test.adminconsole.usermanagement; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage; +import com.sap.sailing.selenium.pages.adminconsole.usermanagement.UserManagementPanelPO; +import com.sap.sailing.selenium.pages.adminconsole.usermanagement.WildcardPermissionPanelPO; +import com.sap.sailing.selenium.test.AbstractSeleniumTest; + +public class TestPermissionCreation extends AbstractSeleniumTest { + private static final String TEST_USER_NAME = "admin"; + private static final String TEST_PERMISSION = "USER:READ"; + + @Override + @Before + public void setUp() { + clearState(getContextRoot()); + super.setUp(); + } + + @Test + public void testOpenCreateBoatDialog() { + final UserManagementPanelPO userManagementPanel = goToUserManagementPanel(); + assertNotNull(userManagementPanel.findUser(TEST_USER_NAME)); + userManagementPanel.selectUser(TEST_USER_NAME); + final WildcardPermissionPanelPO wildcardPermissionPanelPO = userManagementPanel.getUserPermissionsPO(); + assertNull(wildcardPermissionPanelPO.findPermission(TEST_PERMISSION)); + wildcardPermissionPanelPO.enterNewPermissionValue(TEST_PERMISSION); + wildcardPermissionPanelPO.clickAddButtonOrThrow(); + userManagementPanel.selectUser(TEST_USER_NAME); + assertNotNull(wildcardPermissionPanelPO.findPermission(TEST_PERMISSION)); + } + + private UserManagementPanelPO goToUserManagementPanel() { + final AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); + return adminConsole.goToUserManagement(); + } +} diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionPanel.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionPanel.java index 2b4a0b5dd07..1419e413a00 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionPanel.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionPanel.java @@ -56,6 +56,7 @@ public class WildcardPermissionPanel extends HorizontalPanel Function suggestBoxConstructor) { // create multi to single selection adapter final SingleSelectionModel multiToSingleSelectionModelAdapter = new SingleSelectionModel<>(); + this.ensureDebugId(this.getClass().getSimpleName()); userSelectionModel.addSelectionChangeHandler(event -> { multiToSingleSelectionModelAdapter.clear(); if (userSelectionModel.getSelectedSet().size() != 1) { @@ -78,6 +79,7 @@ public class WildcardPermissionPanel extends HorizontalPanel } } suggestPermission = suggestBoxConstructor.apply(oracle); + suggestPermission.ensureDebugId("suggestPermission"); roleAndPermissionResources.css().ensureInjected(); suggestPermission.addStyleName(roleAndPermissionResources.css().enterPermissionSuggest()); suggestPermission.getElement().setPropertyString("placeholder", stringMessages.enterPermissionName()); @@ -110,6 +112,7 @@ public class WildcardPermissionPanel extends HorizontalPanel } suggestPermission.setText(""); }); + addPermissionButton.ensureDebugId("addPermissionButton"); final Command addPermissionButtonUpdater = () -> addPermissionButton .setEnabled(!suggestPermission.getValue().isEmpty()); suggestPermission.addKeyUpHandler(event -> addPermissionButtonUpdater.execute()); diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionWithSecurityDTOTableWrapper.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionWithSecurityDTOTableWrapper.java index 1f82a18204e..0eef8abe829 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionWithSecurityDTOTableWrapper.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/usermanagement/permissions/WildcardPermissionWithSecurityDTOTableWrapper.java @@ -129,6 +129,7 @@ public class WildcardPermissionWithSecurityDTOTableWrapper extends .setUpdatePermissionFilterForCheckbox(permission -> userService.hasPermission(permission, DefaultActions.UPDATE)); mainPanel.insert(filterField, 0); // setup table + table.ensureDebugId("WildcardPermissionWithSecurityDTOTable"); table.addColumnSortHandler(userColumnListHandler); table.addColumn(userGroupWithSecurityDTONameColumn, stringMessages.permission()); table.addColumn(userActionColumn, stringMessages.actions());