package org.keycloak.testsuite.console.page.roles;
import org.keycloak.representations.idm.RoleRepresentation;
import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
import org.keycloak.testsuite.page.Form;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
/**
*
* @author tkyjovsk
*/
public class RoleForm extends Form {
@FindBy(id = "name")
private WebElement nameInput;
@FindBy(id = "description")
private WebElement descriptionInput;
@FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='scopeParamRequired']]")
private OnOffSwitch scopeParamRequired;
@FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='compositeSwitch']]")
private OnOffSwitch compositeSwitch;
@FindBy(xpath = ".//fieldset[./legend[contains(text(),'Composite Roles')]]")
private RoleCompositeRoles compositeRoles;
@FindBy(id = "removeRole")
private WebElement removeIcon;
public RoleRepresentation getRole() {
RoleRepresentation role = new RoleRepresentation(getName(), getDescription(), isScopeParamRequired());
role.setComposite(isComposite());
if (role.isComposite()) {
role.setComposites(compositeRoles.getComposites());
}
return role;
}
public void setRole(RoleRepresentation role) {
setBasicAttributes(role);
}
public RoleRepresentation getBasicAttributes() {
RoleRepresentation role = new RoleRepresentation();
role.setName(getName());
role.setDescription(getDescription());
role.setScopeParamRequired(isScopeParamRequired());
role.setComposite(isComposite());
log.info(role.getName() + ": " + role.getDescription() + ", comp: " + role.isComposite());
return role;
}
public void setBasicAttributes(RoleRepresentation role) {
setName(role.getName());
setDescription(role.getDescription());
setScopeParamRequired(role.isScopeParamRequired());
if (role.isComposite()) {
setCompositeRoles(role);
}
}
// TODO KEYCLOAK-1364 enabling/disabling composite role seems unintuitive
// it should be possible to remove all composite roles by switching to OFF
public void setCompositeRoles(RoleRepresentation role) {
if (role.isComposite() && role.getComposites() != null) {
setComposite(true);
}
compositeRoles.setComposites(role.getComposites());
}
public void setName(String name) {
setInputValue(nameInput, name);
}
public String getName() {
return getInputValue(nameInput);
}
public void setDescription(String description) {
setInputValue(descriptionInput, description);
}
public String getDescription() {
return getInputValue(descriptionInput);
}
public void setScopeParamRequired(boolean scopeParamRequired) {
this.scopeParamRequired.setOn(scopeParamRequired);
}
public boolean isScopeParamRequired() {
return scopeParamRequired.isOn();
}
public void setComposite(boolean composite) {
compositeSwitch.setOn(composite);
}
public boolean isComposite() {
return compositeSwitch.isOn();
}
public RoleCompositeRoles compositeRoles() {
return compositeRoles;
}
public void delete() {
removeIcon.click();
}
}