added initial tests and page for assigning user role mappings
This commit is contained in:
parent
9dd7a947e9
commit
15f8e83d4a
6 changed files with 145 additions and 4 deletions
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,7 +16,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.keycloak.testsuite.ui.page.settings;
|
package org.keycloak.testsuite.ui.page.settings.user;
|
||||||
|
|
||||||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||||
import org.keycloak.testsuite.ui.model.User;
|
import org.keycloak.testsuite.ui.model.User;
|
|
@ -17,7 +17,7 @@ import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.keycloak.testsuite.ui.AbstractKeyCloakTest;
|
import org.keycloak.testsuite.ui.AbstractKeyCloakTest;
|
||||||
import org.keycloak.testsuite.ui.fragment.FlashMessage;
|
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 static org.openqa.selenium.By.id;
|
||||||
import org.openqa.selenium.support.ui.Select;
|
import org.openqa.selenium.support.ui.Select;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.keycloak.testsuite.ui.fragment.FlashMessage;
|
import org.keycloak.testsuite.ui.fragment.FlashMessage;
|
||||||
import org.keycloak.testsuite.ui.model.User;
|
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.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
|
@ -25,7 +25,7 @@ import org.junit.Test;
|
||||||
import org.keycloak.testsuite.ui.fragment.FlashMessage;
|
import org.keycloak.testsuite.ui.fragment.FlashMessage;
|
||||||
import org.keycloak.testsuite.ui.model.User;
|
import org.keycloak.testsuite.ui.model.User;
|
||||||
import org.keycloak.testsuite.ui.page.RegisterPage;
|
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 static org.junit.Assert.*;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue