package org.keycloak.testsuite.console.page.federation; import org.jboss.arquillian.graphene.findby.FindByJQuery; import org.keycloak.testsuite.console.page.fragment.OnOffSwitch; import org.keycloak.testsuite.page.Form; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.Select; import java.util.ArrayList; import java.util.List; import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement; /** * @author fkiss, pdrozd */ public class LdapUserProviderForm extends Form { @FindBy(id = "consoleDisplayName") private WebElement consoleDisplayNameInput; @FindBy(id = "priority") private WebElement priorityInput; @FindBy(id = "usernameLDAPAttribute") private WebElement usernameLDAPAttributeInput; @FindBy(id = "rdnLDAPAttribute") private WebElement rdnLDAPAttributeInput; @FindBy(id = "uuidLDAPAttribute") private WebElement uuidLDAPAttributeInput; @FindBy(id = "userObjectClasses") private WebElement userObjectClassesInput; @FindBy(id = "ldapConnectionUrl") private WebElement ldapConnectionUrlInput; @FindBy(id = "ldapUsersDn") private WebElement ldapUserDnInput; @FindBy(id = "authType") private Select authTypeSelect; @FindBy(id = "ldapBindDn") private WebElement ldapBindDnInput; @FindBy(id = "ldapBindCredential") private WebElement ldapBindCredentialInput; @FindBy(id = "customUserSearchFilter") private WebElement customUserSearchFilterInput; @FindBy(id = "searchScope") private Select searchScopeSelect; @FindBy(id = "kerberosRealm") private WebElement kerberosRealmInput; @FindBy(id = "serverPrincipal") private WebElement serverPrincipalInput; @FindBy(id = "keyTab") private WebElement keyTabInput; @FindBy(id = "batchSizeForSync") private WebElement batchSizeForSyncInput; @FindBy(id = "fullSyncPeriod") private WebElement fullSyncPeriodInput; @FindBy(id = "changedSyncPeriod") private WebElement changedSyncPeriodInput; @FindBy(id = "editMode") private Select editModeSelect; @FindBy(id = "vendor") private Select vendorSelect; @FindByJQuery("a:contains('Test connection')") private WebElement testConnectionButton; @FindByJQuery("a:contains('Test authentication')") private WebElement testAuthenticationButton; @FindByJQuery("a:contains('Synchronize changed users')") private WebElement synchronizeChangedUsersButton; @FindByJQuery("button:contains('Synchronize all users')") private WebElement synchronizeAllUsersButton; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='syncRegistrations']]") private OnOffSwitch syncRegistrations; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='connectionPooling']]") private OnOffSwitch connectionPooling; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='pagination']]") private OnOffSwitch pagination; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='userAccountControlsAfterPasswordUpdate']]") private OnOffSwitch enableAccountAfterPasswordUpdate; @FindBy(xpath = "//div[contains(@class,'onoffswitch') and ./input[@id='allowKerberosAuthentication']]") private OnOffSwitch allowKerberosAuth; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='debug']]") private OnOffSwitch debug; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='useKerberosForPasswordAuthentication']]") private OnOffSwitch useKerberosForPwdAuth; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='compositeSwitch']]") private OnOffSwitch periodicFullSync; @FindBy(xpath = ".//div[contains(@class,'onoffswitch') and ./input[@id='changedSyncEnabled']]") private OnOffSwitch periodicChangedUsersSync; public void setConsoleDisplayNameInput(String name) { setInputValue(consoleDisplayNameInput, name); } public void setPriorityInput(Integer priority) { setInputValue(priorityInput, String.valueOf(priority)); } public void setUsernameLDAPAttributeInput(String usernameLDAPAttribute) { setInputValue(usernameLDAPAttributeInput, usernameLDAPAttribute); } public void setRdnLDAPAttributeInput(String rdnLDAPAttribute) { setInputValue(rdnLDAPAttributeInput, rdnLDAPAttribute); } public void setUuidLDAPAttributeInput(String uuidLDAPAttribute) { setInputValue(uuidLDAPAttributeInput, uuidLDAPAttribute); } public void setUserObjectClassesInput(String userObjectClasses) { setInputValue(userObjectClassesInput, userObjectClasses); } public void setLdapConnectionUrlInput(String ldapConnectionUrl) { setInputValue(ldapConnectionUrlInput, ldapConnectionUrl); } public void setLdapUserDnInput(String ldapUserDn) { setInputValue(ldapUserDnInput, ldapUserDn); } public void setLdapBindDnInput(String ldapBindDn) { setInputValue(ldapBindDnInput, ldapBindDn); } public void setLdapBindCredentialInput(String ldapBindCredential) { setInputValue(ldapBindCredentialInput, ldapBindCredential); } public void setCustomUserSearchFilter(String customUserSearchFilter) { setInputValue(customUserSearchFilterInput, customUserSearchFilter); } public void setKerberosRealmInput(String kerberosRealm) { setInputValue(kerberosRealmInput, kerberosRealm); } public void setServerPrincipalInput(String serverPrincipal) { setInputValue(serverPrincipalInput, serverPrincipal); } public void setKeyTabInput(String keyTab) { setInputValue(keyTabInput, keyTab); } public void setBatchSizeForSyncInput(String batchSizeForSync) { setInputValue(batchSizeForSyncInput, batchSizeForSync); } public void selectEditMode(String mode) { waitUntilElement(By.id("editMode")).is().present(); editModeSelect.selectByVisibleText(mode); } public void selectVendor(String vendor) { waitUntilElement(By.id("vendor")).is().present(); vendorSelect.selectByVisibleText(vendor); } public void selectVendor(int index) { waitUntilElement(By.id("vendor")).is().present(); vendorSelect.selectByIndex(index); } public List<String> getVendors() { waitUntilElement(By.id("vendor")).is().present(); List<WebElement> vendorsElements = vendorSelect.getOptions(); List<String> vendorsString = new ArrayList<>(); for (WebElement vendorElement : vendorsElements) { String text = vendorElement.getText(); if (text.equals("")) {continue;} vendorsString.add(text); } return vendorsString; } public void selectAuthenticationType(String authenticationType) { waitUntilElement(By.id("authType")).is().present(); authTypeSelect.selectByVisibleText(authenticationType); } public void selectSearchScope(String searchScope) { waitUntilElement(By.id("searchScope")).is().present(); searchScopeSelect.selectByVisibleText(searchScope); } public void setSyncRegistrationsEnabled(boolean syncRegistrationsEnabled) { this.syncRegistrations.setOn(syncRegistrationsEnabled); } public void setConnectionPoolingEnabled(boolean connectionPoolingEnabled) { this.connectionPooling.setOn(connectionPoolingEnabled); } public void setPaginationEnabled(boolean paginationEnabled) { this.pagination.setOn(paginationEnabled); } public void setAccountAfterPasswordUpdateEnabled(boolean enabled) { enableAccountAfterPasswordUpdate.setOn(enabled); } public void setAllowKerberosAuthEnabled(boolean enabled) { allowKerberosAuth.setOn(enabled); } public void setDebugEnabled(boolean debugEnabled) { this.debug.setOn(debugEnabled); } public void setUseKerberosForPwdAuthEnabled(boolean useKerberosForPwdAuthEnabled) { this.useKerberosForPwdAuth.setOn(useKerberosForPwdAuthEnabled); } public void setPeriodicFullSyncEnabled(boolean periodicFullSyncEnabled) { this.periodicFullSync.setOn(periodicFullSyncEnabled); } public void setPeriodicChangedUsersSyncEnabled(boolean periodicChangedUsersSyncEnabled) { this.periodicChangedUsersSync.setOn(periodicChangedUsersSyncEnabled); } public void testConnection() { testConnectionButton.click(); } public void testAuthentication() { testAuthenticationButton.click(); } public void synchronizeAllUsers() { waitUntilElement(synchronizeAllUsersButton).is().present(); synchronizeAllUsersButton.click(); } }