package org.keycloak.testsuite.console.page.users; import org.keycloak.representations.idm.UserRepresentation; 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; import org.openqa.selenium.support.ui.Select; import java.util.List; import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement; /** * * @author Filip Kiss * @author tkyjovsk */ public class UserAttributesForm extends Form { @FindBy(id = "id") private WebElement idInput; @FindBy(id = "username") private WebElement usernameInput; @FindBy(id = "email") private WebElement emailInput; @FindBy(id = "firstName") private WebElement firstNameInput; @FindBy(id = "lastName") private WebElement lastNameInput; @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='userEnabled']]") private OnOffSwitch userEnabledSwitch; @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='emailVerified']]") private OnOffSwitch emailVerifiedSwitch; @FindBy(xpath = ".//div[./label[contains(text(), 'Required User Actions')]]//input") private WebElement requiredUserActionsInput; @FindBy(id = "reqActions") private Select requiredUserActionsSelect; @FindBy(className = "select2-result-label") private WebElement requiredUserActionsConfirm; @FindBy(className = "select2-search-choice-close") private List<WebElement> removeRequiredActionsList; @FindBy(xpath = "//button[@data-ng-click='unlockUser()']") private WebElement unlockUserButton; public String getId() { return getInputValue(idInput); } public String getUsername() { return getInputValue(usernameInput); } public void setUsername(String username) { setInputValue(usernameInput, username); } public String getEmail() { return getInputValue(emailInput); } public void setEmail(String email) { setInputValue(emailInput, email); } public String getFirstName() { return getInputValue(firstNameInput); } public void setFirstName(String firstName) { setInputValue(firstNameInput, firstName); } public String getLastName() { return getInputValue(lastNameInput); } public void setLastName(String lastname) { setInputValue(lastNameInput, lastname); } public boolean isEnabled() { return userEnabledSwitch.isOn(); } public void setEnabled(boolean enabled) { userEnabledSwitch.setOn(enabled); } public void unlockUser() { unlockUserButton.click(); } public boolean isEmailVerified() { return emailVerifiedSwitch.isOn(); } public void setEmailVerified(boolean emailVerified) { emailVerifiedSwitch.setOn(emailVerified); } public void addRequiredAction(String requiredAction) { requiredUserActionsInput.click(); requiredUserActionsSelect.selectByVisibleText(requiredAction); } public void setRequiredActions(List<String> requiredActions) { for (WebElement e : removeRequiredActionsList) { e.click(); } if (requiredActions != null && !requiredActions.isEmpty()) { for (String action : requiredActions) { addRequiredAction(action); } } } public void setValues(UserRepresentation user) { waitUntilElement(usernameInput).is().present(); setUsername(user.getUsername()); setEmail(user.getEmail()); setFirstName(user.getFirstName()); setLastName(user.getLastName()); if (user.isEnabled() != null) setEnabled(user.isEnabled()); if (user.isEmailVerified() != null) setEmailVerified(user.isEmailVerified()); setRequiredActions(user.getRequiredActions()); } // TODO Contact Information section }