keycloak-memoizeit

Details

diff --git a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/page/settings/user/RoleMappingsPage.java b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/page/settings/user/RoleMappingsPage.java
new file mode 100644
index 0000000..3b92314
--- /dev/null
+++ b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/page/settings/user/RoleMappingsPage.java
@@ -0,0 +1,71 @@
+package org.keycloak.testsuite.ui.page.settings.user;
+
+import org.keycloak.testsuite.ui.page.AbstractPage;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.ui.Select;
+
+import static org.keycloak.testsuite.ui.util.SeleniumUtils.waitGuiForElement;
+
+/**
+ * Created by fkiss.
+ */
+public class RoleMappingsPage extends AbstractPage {
+
+    @FindBy(id = "available")
+    private Select availableRolesSelect;
+
+    @FindBy(id = "assigned")
+    private Select assignedRolesSelect;
+
+    @FindBy(id = "realm-composite")
+    private Select effectiveRolesSelect;
+
+    @FindBy(id = "available-client")
+    private Select availableClientRolesSelect;
+
+    @FindBy(id = "assigned-client")
+    private Select assignedClientRolesSelect;
+
+    @FindBy(css = "button[ng-click*='addRealm']")
+    private WebElement addSelected;
+
+    @FindBy(css = "button[ng-click*='addRealm']")
+    private WebElement addSelectedButton;
+
+    @FindBy(css = "button[ng-click*='deleteRealm']")
+    private WebElement removeSelectedButton;
+
+    @FindBy(id = "clients")
+    private Select clientRolesSelect;
+
+    public void addAvailableRole(String role){
+        waitGuiForElement(By.id("available"));
+        availableRolesSelect.selectByVisibleText(role);
+        addSelected.click();
+    }
+
+    public void removeAssignedRole(String client){
+        waitGuiForElement(By.id("assigned"));
+        assignedRolesSelect.selectByVisibleText(client);
+        removeSelectedButton.click();
+    }
+
+    public void selectClientRole(String client){
+        waitGuiForElement(By.id("clients"));
+        clientRolesSelect.selectByVisibleText(client);
+    }
+
+    public void addAvailableClientRole(String role){
+        waitGuiForElement(By.id("available-client"));
+        availableRolesSelect.selectByVisibleText(role);
+        addSelected.click();
+    }
+
+    public void removeAssignedClientRole(String client){
+        waitGuiForElement(By.id("assigned-client"));
+        assignedClientRolesSelect.selectByVisibleText(client);
+        removeSelectedButton.click();
+    }
+}
diff --git a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/role/AddNewRoleTest.java b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/role/AddNewRoleTest.java
index 7bcd681..03066e6 100644
--- a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/role/AddNewRoleTest.java
+++ b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/role/AddNewRoleTest.java
@@ -17,7 +17,7 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.keycloak.testsuite.ui.AbstractKeyCloakTest;
 import org.keycloak.testsuite.ui.fragment.FlashMessage;
-import org.keycloak.testsuite.ui.page.settings.UserPage;
+import org.keycloak.testsuite.ui.page.settings.user.UserPage;
 import static org.openqa.selenium.By.id;
 import org.openqa.selenium.support.ui.Select;
 
diff --git a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/AddNewUserTest.java b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/AddNewUserTest.java
index c59cd30..f65cc15 100644
--- a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/AddNewUserTest.java
+++ b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/AddNewUserTest.java
@@ -22,7 +22,7 @@ import org.jboss.arquillian.graphene.findby.FindByJQuery;
 import org.junit.Test;
 import org.keycloak.testsuite.ui.fragment.FlashMessage;
 import org.keycloak.testsuite.ui.model.User;
-import org.keycloak.testsuite.ui.page.settings.UserPage;
+import org.keycloak.testsuite.ui.page.settings.user.UserPage;
 
 
 import static org.junit.Assert.*;
diff --git a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RegisterNewUserTest.java b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RegisterNewUserTest.java
index 834ba25..981c531 100644
--- a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RegisterNewUserTest.java
+++ b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RegisterNewUserTest.java
@@ -25,7 +25,7 @@ import org.junit.Test;
 import org.keycloak.testsuite.ui.fragment.FlashMessage;
 import org.keycloak.testsuite.ui.model.User;
 import org.keycloak.testsuite.ui.page.RegisterPage;
-import org.keycloak.testsuite.ui.page.settings.UserPage;
+import org.keycloak.testsuite.ui.page.settings.user.UserPage;
 
 import static org.junit.Assert.*;
 import org.junit.Before;
diff --git a/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RoleMappingsTest.java b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RoleMappingsTest.java
new file mode 100644
index 0000000..4c727b5
--- /dev/null
+++ b/testsuite/integration-arquillian/src/test/java/org/keycloak/testsuite/ui/test/user/RoleMappingsTest.java
@@ -0,0 +1,70 @@
+package org.keycloak.testsuite.ui.test.user;
+
+import org.jboss.arquillian.graphene.findby.FindByJQuery;
+import org.jboss.arquillian.graphene.page.Page;
+import org.junit.Before;
+import org.junit.Test;
+import org.keycloak.testsuite.ui.AbstractKeyCloakTest;
+import org.keycloak.testsuite.ui.fragment.FlashMessage;
+import org.keycloak.testsuite.ui.model.User;
+import org.keycloak.testsuite.ui.page.settings.user.RoleMappingsPage;
+import org.keycloak.testsuite.ui.page.settings.user.UserPage;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.openqa.selenium.By.linkText;
+
+/**
+ * Created by fkiss.
+ */
+public class RoleMappingsTest extends AbstractKeyCloakTest<RoleMappingsPage> {
+
+    @Page
+    private UserPage userPage;
+
+    @FindByJQuery(".alert")
+    private FlashMessage flashMessage;
+
+    @Before
+    public void beforeAddNewUserTest() {
+        navigation.users();
+    }
+
+    @Test
+    public void addUserAndAssignRole() {
+        String testUsername = "tester1";
+        User testUser = new User(testUsername, "pass");
+        userPage.addUser(testUser);
+        flashMessage.waitUntilPresent();
+        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
+        navigation.users();
+        userPage.findUser(testUsername);
+        driver.findElement(linkText(testUsername)).click();
+        navigation.roleMappings();
+
+        page.addAvailableRole("create-realm");
+        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
+        navigation.users();
+        userPage.deleteUser(testUsername);
+    }
+
+    @Test
+    public void addAndRemoveUserAndAssignRole() {
+        String testUsername = "tester2";
+        User testUser = new User(testUsername, "pass");
+        userPage.addUser(testUser);
+        flashMessage.waitUntilPresent();
+        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
+        navigation.users();
+        userPage.findUser(testUsername);
+        driver.findElement(linkText(testUsername)).click();
+        navigation.roleMappings();
+
+        page.addAvailableRole("create-realm");
+        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
+        page.removeAssignedRole("create-realm");
+        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
+        navigation.users();
+        userPage.deleteUser(testUsername);
+    }
+}