Merge pull request #1903 from tkyjovsk/master
Increased pageload timeout. Increased other timeouts for travis. Better handling of closeable alert messages.
This commit is contained in:
commit
4a57bcc0b4
61 changed files with 380 additions and 338 deletions
|
@ -41,5 +41,4 @@
|
|||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
|
@ -5,7 +5,7 @@ import org.jboss.arquillian.container.test.api.OperateOnDeployment;
|
|||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.jboss.arquillian.test.api.ArquillianResource;
|
||||
import org.keycloak.testsuite.page.AbstractPageWithInjectedUrl;
|
||||
import org.keycloak.testsuite.util.WaitUtils;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
/**
|
||||
|
@ -61,7 +61,7 @@ public class CustomerPortalExample extends AbstractPageWithInjectedUrl {
|
|||
}
|
||||
|
||||
public void customerSession() {
|
||||
WaitUtils.waitGuiForElement(customerSessionLink);
|
||||
waitUntilElement(customerSessionLink).is().present();
|
||||
customerSessionLink.click();
|
||||
}
|
||||
|
||||
|
@ -70,11 +70,11 @@ public class CustomerPortalExample extends AbstractPageWithInjectedUrl {
|
|||
}
|
||||
|
||||
public void waitForCustomerListingHeader() {
|
||||
WaitUtils.waitGuiForElementNotPresent(customerListingHeader);
|
||||
waitUntilElement(customerListingHeader).is().not().present();
|
||||
}
|
||||
|
||||
public void waitForCustomerSessionHeader() {
|
||||
WaitUtils.waitGuiForElementNotPresent(customerSessionHeader);
|
||||
waitUntilElement(customerSessionHeader).is().not().present();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import org.jboss.arquillian.container.test.api.OperateOnDeployment;
|
|||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.jboss.arquillian.test.api.ArquillianResource;
|
||||
import org.keycloak.testsuite.page.AbstractPageWithInjectedUrl;
|
||||
import org.keycloak.testsuite.util.WaitUtils;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
/**
|
||||
|
@ -48,7 +48,7 @@ public class ProductPortalExample extends AbstractPageWithInjectedUrl {
|
|||
}
|
||||
|
||||
public void waitForProductListingHeader() {
|
||||
WaitUtils.waitGuiForElementNotPresent(productListingHeader);
|
||||
waitUntilElement(productListingHeader).is().not().present();
|
||||
}
|
||||
|
||||
public void logOut() {
|
||||
|
|
|
@ -2,8 +2,7 @@ package org.keycloak.testsuite.auth.page.account;
|
|||
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElementNotPresent;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -49,11 +48,11 @@ public class AccountFields extends Form {
|
|||
}
|
||||
|
||||
public void waitForUsernameInputPresent() {
|
||||
waitAjaxForElement(usernameInput);
|
||||
waitUntilElement(usernameInput).is().present();
|
||||
}
|
||||
|
||||
public void waitForUsernameInputNotPresent() {
|
||||
waitAjaxForElementNotPresent(usernameInput);
|
||||
waitUntilElement(usernameInput).is().not().present();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ import javax.ws.rs.core.UriBuilder;
|
|||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElementPresent;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class AccountManagement extends AuthRealm {
|
|||
private WebElement error;
|
||||
|
||||
public String getErrorMessage() {
|
||||
waitGuiForElementPresent(error, "Error message should be visible");
|
||||
waitUntilElement(error, "Error message should be present").is().present();
|
||||
return error.getText();
|
||||
}
|
||||
|
||||
|
@ -107,6 +107,6 @@ public class AccountManagement extends AuthRealm {
|
|||
}
|
||||
|
||||
public void waitForAccountLinkPresent() {
|
||||
waitGuiForElementPresent(accountLink, "account link should be present");
|
||||
waitUntilElement(accountLink, "account link should be present").is().present();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
package org.keycloak.testsuite.auth.page.account;
|
||||
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
import org.keycloak.testsuite.util.WaitUtils;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -54,6 +54,6 @@ public class PasswordFields extends Form {
|
|||
}
|
||||
|
||||
public void waitForConfirmPasswordInputPresent() {
|
||||
WaitUtils.waitGuiForElement(confirmPasswordInput);
|
||||
waitUntilElement(confirmPasswordInput).is().present();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* JBoss, Home of Professional Open Source
|
||||
*
|
||||
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.keycloak.testsuite.auth.page.account.fragment;
|
||||
|
||||
import org.keycloak.testsuite.page.AbstractAlert;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author tkyjovsk
|
||||
*/
|
||||
public class AccountManagementAlert extends AbstractAlert {
|
||||
|
||||
public boolean isError() {
|
||||
return getAttributeClass().contains("alert-error");
|
||||
}
|
||||
|
||||
}
|
|
@ -20,8 +20,7 @@ package org.keycloak.testsuite.auth.page.login;
|
|||
import javax.ws.rs.core.UriBuilder;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElementNotPresent;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -62,11 +61,11 @@ public abstract class Login extends AuthRealm {
|
|||
private WebElement keycloakTheme;
|
||||
|
||||
public void waitForKeycloakThemeNotPresent() {
|
||||
waitGuiForElementNotPresent(keycloakTheme);
|
||||
waitUntilElement(keycloakTheme).is().not().present();
|
||||
}
|
||||
|
||||
public void waitForKeycloakThemePresent() {
|
||||
waitGuiForElement(keycloakTheme);
|
||||
waitUntilElement(keycloakTheme).is().present();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ package org.keycloak.testsuite.auth.page.login;
|
|||
|
||||
import javax.ws.rs.core.UriBuilder;
|
||||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElementPresent;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -45,7 +45,7 @@ public class LoginActions extends AuthRealm {
|
|||
private WebElement feedbackText;
|
||||
|
||||
public String getFeedbackText() {
|
||||
waitGuiForElementPresent(feedbackText, "Feedback message should be visible");
|
||||
waitUntilElement(feedbackText, "Feedback message should be present").is().present();
|
||||
return feedbackText.getText();
|
||||
}
|
||||
|
||||
|
|
|
@ -70,17 +70,17 @@ public class LoginForm extends Form {
|
|||
|
||||
public void register() {
|
||||
waitForUsernameInputPresent();
|
||||
waitAjaxForElement(registerLink);
|
||||
waitUntilElement(registerLink).is().present();
|
||||
registerLink.click();
|
||||
}
|
||||
|
||||
public void login() {
|
||||
waitAjaxForElement(loginButton);
|
||||
waitUntilElement(loginButton).is().present();
|
||||
loginButton.click();
|
||||
}
|
||||
|
||||
public void forgotPassword() {
|
||||
waitAjaxForElement(forgottenPassword);
|
||||
waitUntilElement(forgottenPassword).is().present();
|
||||
forgottenPassword.click();
|
||||
}
|
||||
|
||||
|
@ -94,32 +94,31 @@ public class LoginForm extends Form {
|
|||
|
||||
// @Override
|
||||
// public void cancel() {
|
||||
// waitAjaxForElement(cancelButton);
|
||||
// waitUntilElement(cancelButton).is().present();
|
||||
// cancelButton.click();
|
||||
// }
|
||||
|
||||
public void waitForUsernameInputPresent() {
|
||||
accountFields.waitForUsernameInputPresent();
|
||||
}
|
||||
|
||||
public void waitForRegisterLinkNotPresent() {
|
||||
waitAjaxForElementNotPresent(registerLink);
|
||||
waitUntilElement(registerLink).is().not().present();
|
||||
}
|
||||
|
||||
public void waitForResetPasswordLinkNotPresent() {
|
||||
waitAjaxForElementNotPresent(forgottenPassword);
|
||||
waitUntilElement(forgottenPassword).is().not().present();
|
||||
}
|
||||
|
||||
public void waitForRememberMePresent() {
|
||||
waitAjaxForElement(rememberMe);
|
||||
waitUntilElement(rememberMe).is().present();
|
||||
}
|
||||
|
||||
public void waitForRememberMeNotPresent() {
|
||||
waitAjaxForElementNotPresent(rememberMe);
|
||||
waitUntilElement(rememberMe).is().not().present();
|
||||
}
|
||||
|
||||
public void waitForLoginButtonPresent() {
|
||||
waitGuiForElement(loginButton);
|
||||
waitUntilElement(loginButton).is().present();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ import javax.ws.rs.core.UriBuilder;
|
|||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.keycloak.testsuite.auth.page.account.AccountFields;
|
||||
import org.keycloak.testsuite.auth.page.account.PasswordFields;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElementPresent;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class ResetCredentials extends LoginActions {
|
|||
}
|
||||
|
||||
public String getInfoMessage() {
|
||||
waitGuiForElementPresent(info, "Info message should be visible");
|
||||
waitUntilElement(info, "Info message should be visible").is().present();
|
||||
return info.getText();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.auth.page.login;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -35,7 +35,7 @@ public class VerifyEmail extends Authenticate {
|
|||
private WebElement instruction;
|
||||
|
||||
public String getInstructionMessage() {
|
||||
waitGuiForElement(instruction);
|
||||
waitUntilElement(instruction).is().present();
|
||||
return instruction.getText();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,7 @@ package org.keycloak.testsuite.console.page;
|
|||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import static org.keycloak.testsuite.auth.page.AuthRealm.TEST;
|
||||
|
||||
import org.keycloak.testsuite.util.WaitUtils;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
@ -39,7 +38,7 @@ public class AdminConsoleRealm extends AdminConsoleRealmsRoot {
|
|||
private ConfigureMenu configureMenu;
|
||||
|
||||
public ConfigureMenu configure() {
|
||||
waitGuiForElement(By.xpath("//div[./h2[text()='Configure']]"));
|
||||
waitUntilElement(By.xpath("//div[./h2[text()='Configure']]")).is().present();
|
||||
return configureMenu;
|
||||
}
|
||||
|
||||
|
@ -92,7 +91,7 @@ public class AdminConsoleRealm extends AdminConsoleRealmsRoot {
|
|||
protected ManageMenu manageMenu;
|
||||
|
||||
public ManageMenu manage() {
|
||||
WaitUtils.waitGuiForElement(By.xpath("//div[./h2[text()='Manage']]"));
|
||||
waitUntilElement(By.xpath("//div[./h2[text()='Manage']]")).is().present();
|
||||
return manageMenu;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,12 +24,12 @@ public class Authentication extends AdminConsoleRealm {
|
|||
private WebElement close;
|
||||
|
||||
public String getSuccessMessage() {
|
||||
waitAjaxForElement(success);
|
||||
waitUntilElement(success).is().present();
|
||||
return success.getText();
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
waitAjaxForElement(error);
|
||||
waitUntilElement(error).is().present();
|
||||
return error.getText();
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ public class Authentication extends AdminConsoleRealm {
|
|||
if (close.isDisplayed()) {
|
||||
close.click();
|
||||
}
|
||||
waitAjaxForElementNotVisible(close);
|
||||
waitUntilElement(close).is().not().visible();
|
||||
}
|
||||
|
||||
public AuthenticationTabs tabs() {
|
||||
|
|
|
@ -8,7 +8,7 @@ import org.openqa.selenium.support.ui.Select;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
|
||||
/**
|
||||
* @author Petr Mensik
|
||||
|
@ -32,7 +32,7 @@ public class PasswordPolicy extends Authentication {
|
|||
private List<WebElement> allRows;
|
||||
|
||||
public void addPolicy(PasswordPolicy.Type policy, String value) {
|
||||
waitGuiForElement(addPolicySelectElement);
|
||||
waitUntilElement(addPolicySelectElement).is().present();
|
||||
addPolicySelect.selectByVisibleText(policy.getName());
|
||||
setPolicyValue(policy, value);
|
||||
primaryButton.click();
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.console.page.authentication.flows;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
@ -71,7 +71,7 @@ public class FlowsTable {
|
|||
|
||||
private WebElement getRowByLabelText(String text) {
|
||||
WebElement row = tbody.findElement(By.xpath("//span[text() = '" + text + "']/../.."));
|
||||
waitAjaxForElement(row);
|
||||
waitUntilElement(row).is().present();
|
||||
return row;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,17 +38,17 @@ public class ClientMappers extends Client {
|
|||
}
|
||||
|
||||
public void createMapper() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderLink(CREATE);
|
||||
}
|
||||
|
||||
public void addBuiltin() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderLink(ADD_BUILTIN);
|
||||
}
|
||||
|
||||
public void clickMapper(String mapperName) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
body().findElement(By.linkText(mapperName)).click();
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class ClientMappers extends Client {
|
|||
}
|
||||
|
||||
private void clickMapperActionButton(String mapperName, String buttonText) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickRowActionButton(getRowByLinkText(mapperName), buttonText);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,32 +62,32 @@ public class Clients extends AdminConsoleRealm {
|
|||
}
|
||||
|
||||
public void createClient() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderLink(CREATE);
|
||||
}
|
||||
|
||||
public void importClient() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderLink(IMPORT);
|
||||
}
|
||||
|
||||
public void clickClient(ClientRepresentation client) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickClient(client.getClientId());
|
||||
}
|
||||
|
||||
public void clickClient(String clientId) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
body().findElement(linkText(clientId)).click();
|
||||
}
|
||||
|
||||
public void editClient(String clientId) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickRowActionButton(getRowByLinkText(clientId), EDIT);
|
||||
}
|
||||
|
||||
public void deleteClient(String clientId) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickRowActionButton(getRowByLinkText(clientId), DELETE);
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
|
|||
import org.keycloak.testsuite.page.Form;
|
||||
import static org.keycloak.testsuite.page.Form.getInputValue;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.keycloak.testsuite.util.Timer;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
@ -69,7 +69,7 @@ public class CreateClientForm extends Form {
|
|||
private List<WebElement> deleteRedirectUriIcons;
|
||||
|
||||
public void setValues(ClientRepresentation client) {
|
||||
waitAjaxForElement(clientIdInput);
|
||||
waitUntilElement(clientIdInput).is().present();
|
||||
|
||||
setClientId(client.getClientId());
|
||||
setName(client.getName());
|
||||
|
@ -230,7 +230,7 @@ public class CreateClientForm extends Form {
|
|||
}
|
||||
|
||||
public String getProtocol() {
|
||||
waitAjaxForElement(protocolSelect.getFirstSelectedOption());
|
||||
waitUntilElement(protocolSelect.getFirstSelectedOption()).is().present();
|
||||
return protocolSelect.getFirstSelectedOption().getText();
|
||||
}
|
||||
|
||||
|
|
|
@ -33,17 +33,17 @@ public class AdminEvents extends Events {
|
|||
private AdminEventsTableFilterForm filterForm;
|
||||
|
||||
public void update() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderButton("Update");
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderButton("Reset");
|
||||
}
|
||||
|
||||
public void filter() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
filterButton.click();
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ public class Config extends Events {
|
|||
}
|
||||
|
||||
public void waitForClearEventsButtonPresent() {
|
||||
waitAjaxForElement(clearLoginEventsButton);
|
||||
waitUntilElement(clearLoginEventsButton).is().present();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,17 +33,17 @@ public class LoginEvents extends Events {
|
|||
private LoginEventsTableFilterForm filterForm;
|
||||
|
||||
public void update() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderButton("Update");
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickHeaderButton("Reset");
|
||||
}
|
||||
|
||||
public void filter() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
filterButton.click();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package org.keycloak.testsuite.console.page.federation;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
|
||||
import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
|
@ -50,7 +50,7 @@ public class KerberosUserProviderForm extends Form {
|
|||
}
|
||||
|
||||
public void setKerberosRealmInput(String kerberosRealm) {
|
||||
waitGuiForElement(By.id("kerberosRealm"));
|
||||
waitUntilElement(By.id("kerberosRealm")).is().present();
|
||||
setInputValue(kerberosRealmInput, kerberosRealm);
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ public class KerberosUserProviderForm extends Form {
|
|||
}
|
||||
|
||||
public void selectEditMode(String mode) {
|
||||
waitGuiForElement(By.id("editMode"));
|
||||
waitUntilElement(By.id("editMode")).is().present();
|
||||
editModeSelect.selectByVisibleText(mode);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package org.keycloak.testsuite.console.page.federation;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
|
||||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
|
||||
|
@ -156,17 +156,14 @@ public class LdapUserProviderForm extends Form {
|
|||
}
|
||||
|
||||
public void setKerberosRealmInput(String kerberosRealm) {
|
||||
waitAjaxForElement(kerberosRealmInput);
|
||||
setInputValue(kerberosRealmInput, kerberosRealm);
|
||||
}
|
||||
|
||||
public void setServerPrincipalInput(String serverPrincipal) {
|
||||
waitAjaxForElement(serverPrincipalInput);
|
||||
setInputValue(serverPrincipalInput, serverPrincipal);
|
||||
}
|
||||
|
||||
public void setKeyTabInput(String keyTab) {
|
||||
waitAjaxForElement(keyTabInput);
|
||||
setInputValue(keyTabInput, keyTab);
|
||||
}
|
||||
|
||||
|
@ -175,22 +172,22 @@ public class LdapUserProviderForm extends Form {
|
|||
}
|
||||
|
||||
public void selectEditMode(String mode) {
|
||||
waitGuiForElement(By.id("editMode"));
|
||||
waitUntilElement(By.id("editMode")).is().present();
|
||||
editModeSelect.selectByVisibleText(mode);
|
||||
}
|
||||
|
||||
public void selectVendor(String vendor) {
|
||||
waitGuiForElement(By.id("vendor"));
|
||||
waitUntilElement(By.id("vendor")).is().present();
|
||||
vendorSelect.selectByVisibleText(vendor);
|
||||
}
|
||||
|
||||
public void selectAuthenticationType(String authenticationType) {
|
||||
waitGuiForElement(By.id("authType"));
|
||||
waitUntilElement(By.id("authType")).is().present();
|
||||
authTypeSelect.selectByVisibleText(authenticationType);
|
||||
}
|
||||
|
||||
public void selectSearchScope(String searchScope) {
|
||||
waitGuiForElement(By.id("searchScope"));
|
||||
waitUntilElement(By.id("searchScope")).is().present();
|
||||
searchScopeSelect.selectByVisibleText(searchScope);
|
||||
}
|
||||
|
||||
|
@ -248,7 +245,7 @@ public class LdapUserProviderForm extends Form {
|
|||
}
|
||||
|
||||
public void synchronizeAllUsers() {
|
||||
waitAjaxForElement(synchronizeAllUsersButton);
|
||||
waitUntilElement(synchronizeAllUsersButton).is().present();
|
||||
synchronizeAllUsersButton.click();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import org.keycloak.testsuite.console.page.AdminConsoleRealm;
|
|||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.support.ui.Select;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
|
||||
/**
|
||||
* Created by fkiss.
|
||||
|
@ -21,7 +21,7 @@ public class UserFederation extends AdminConsoleRealm {
|
|||
private Select addProviderSelect;
|
||||
|
||||
public void addProvider(String provider) {
|
||||
waitGuiForElement(By.cssSelector("select[ng-model*='selectedProvider']"));
|
||||
waitUntilElement(By.cssSelector("select[ng-model*='selectedProvider']")).is().present();
|
||||
addProviderSelect.selectByVisibleText(provider);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* JBoss, Home of Professional Open Source
|
||||
*
|
||||
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.keycloak.testsuite.console.page.fragment;
|
||||
|
||||
import org.keycloak.testsuite.page.AbstractAlert;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Petr Mensik
|
||||
* @author tkyjovsk
|
||||
*/
|
||||
public class AdminConsoleAlert extends AbstractAlert {
|
||||
|
||||
@FindBy(xpath = "//button[@class='close']")
|
||||
protected WebElement closeButton;
|
||||
|
||||
public boolean isInfo() {
|
||||
return getAttributeClass().contains("alert-info");
|
||||
}
|
||||
|
||||
public boolean isWarning() {
|
||||
return getAttributeClass().contains("alert-warning");
|
||||
}
|
||||
|
||||
public boolean isDanger() {
|
||||
return getAttributeClass().contains("alert-danger");
|
||||
}
|
||||
|
||||
public void close() {
|
||||
closeButton.click();
|
||||
}
|
||||
|
||||
}
|
|
@ -2,7 +2,7 @@ package org.keycloak.testsuite.console.page.fragment;
|
|||
|
||||
import java.util.List;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.pause;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
import static org.openqa.selenium.By.xpath;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
@ -30,18 +30,18 @@ public class DataTable {
|
|||
private WebElement infoRow;
|
||||
|
||||
public void search(String pattern) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
searchInput.sendKeys(pattern);
|
||||
searchButton.click();
|
||||
}
|
||||
|
||||
public void clickHeaderButton(String buttonText) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
header.findElement(By.xpath(".//button[text()='" + buttonText + "']")).click();
|
||||
}
|
||||
|
||||
public void clickHeaderLink(String linkText) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
header.findElement(By.linkText(linkText)).click();
|
||||
}
|
||||
|
||||
|
@ -49,19 +49,19 @@ public class DataTable {
|
|||
return body;
|
||||
}
|
||||
|
||||
public void waitAjaxForBody() {
|
||||
waitAjaxForElement(body);
|
||||
public void waitForBody() {
|
||||
waitUntilElement(body).is().present();
|
||||
}
|
||||
|
||||
public List<WebElement> rows() {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
pause(250);
|
||||
return rows;
|
||||
}
|
||||
|
||||
public WebElement getRowByLinkText(String text) {
|
||||
WebElement row = body.findElement(By.xpath(".//tr[./td/a[text()='" + text + "']]"));
|
||||
waitAjaxForElement(row);
|
||||
waitUntilElement(row).is().present();
|
||||
return row;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
/*
|
||||
* JBoss, Home of Professional Open Source
|
||||
*
|
||||
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.keycloak.testsuite.console.page.fragment;
|
||||
|
||||
import static org.jboss.arquillian.graphene.Graphene.waitGui;
|
||||
import org.jboss.arquillian.graphene.fragment.Root;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElementPresent;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Petr Mensik
|
||||
*/
|
||||
public class FlashMessage {
|
||||
|
||||
@Root
|
||||
private WebElement root;
|
||||
|
||||
public boolean isSuccess() {
|
||||
waitGui().until("Flash message should be success")
|
||||
.element(root)
|
||||
.attribute("class")
|
||||
.contains("success");
|
||||
return root.getAttribute("class").contains("success");
|
||||
}
|
||||
|
||||
public boolean isError() {
|
||||
waitGui().until("Flash message should be error")
|
||||
.element(root)
|
||||
.attribute("class")
|
||||
.contains("error");
|
||||
return root.getAttribute("class").contains("error");
|
||||
}
|
||||
|
||||
public boolean isDanger() {
|
||||
waitGui().until("Flash message should be danger")
|
||||
.element(root)
|
||||
.attribute("class")
|
||||
.contains("danger");
|
||||
return root.getAttribute("class").contains("danger");
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return root.getText();
|
||||
}
|
||||
|
||||
public void waitUntilPresent() {
|
||||
waitGuiForElementPresent(root, "Flash message should be visible.");
|
||||
}
|
||||
}
|
|
@ -18,7 +18,7 @@
|
|||
package org.keycloak.testsuite.console.page.fragment;
|
||||
|
||||
import java.util.List;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
@ -53,7 +53,7 @@ public class Menu {
|
|||
}
|
||||
|
||||
public String getCurrentRealm() {
|
||||
waitGuiForElement(By.cssSelector(MENU_LOCATOR));
|
||||
waitUntilElement(By.cssSelector(MENU_LOCATOR)).is().present();
|
||||
return toggle.get(1).getText();
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ public class Menu {
|
|||
menuOrder = 0;
|
||||
break;
|
||||
}
|
||||
waitGuiForElement(By.cssSelector(MENU_LOCATOR));
|
||||
waitUntilElement(By.cssSelector(MENU_LOCATOR)).is().present();
|
||||
if (!menuList.get(menuOrder).isDisplayed()) {
|
||||
toggle.get(menuOrder).click();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package org.keycloak.testsuite.console.page.fragment;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -21,22 +21,22 @@ public class ModalDialog {
|
|||
private WebElement nameInput;
|
||||
|
||||
public void ok() {
|
||||
waitAjaxForElement(okButton);
|
||||
waitUntilElement(okButton).is().present();
|
||||
okButton.click();
|
||||
}
|
||||
|
||||
public void confirmDeletion() {
|
||||
waitAjaxForElement(deleteButton);
|
||||
waitUntilElement(deleteButton).is().present();
|
||||
deleteButton.click();
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
waitAjaxForElement(cancelButton);
|
||||
waitUntilElement(cancelButton).is().present();
|
||||
cancelButton.click();
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
waitAjaxForElement(nameInput);
|
||||
waitUntilElement(nameInput).is().present();
|
||||
nameInput.clear();
|
||||
nameInput.sendKeys(name);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ package org.keycloak.testsuite.console.page.fragment;
|
|||
|
||||
import org.jboss.arquillian.graphene.fragment.Root;
|
||||
import org.jboss.arquillian.test.api.ArquillianResource;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.interactions.Actions;
|
||||
|
@ -45,12 +45,12 @@ public class OnOffSwitch {
|
|||
}
|
||||
|
||||
public boolean isOn() {
|
||||
waitAjaxForElement(root);
|
||||
waitUntilElement(root).is().present();
|
||||
return root.findElement(By.tagName("input")).isSelected();
|
||||
}
|
||||
|
||||
private void click() {
|
||||
waitAjaxForElement(root);
|
||||
waitUntilElement(root).is().present();
|
||||
actions.moveToElement(root.findElements(By.tagName("span")).get(0))
|
||||
.click().build().perform();
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ package org.keycloak.testsuite.console.page.realm;
|
|||
import org.openqa.selenium.support.FindBy;
|
||||
import org.openqa.selenium.support.ui.Select;
|
||||
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
/**
|
||||
|
@ -47,7 +47,7 @@ public class ThemeSettings extends RealmSettings {
|
|||
private Select emailThemeSelect;
|
||||
|
||||
public void changeLoginTheme(String themeName) {
|
||||
waitGuiForElement(By.id("loginTheme"));
|
||||
waitUntilElement(By.id("loginTheme")).is().present();
|
||||
loginThemeSelect.selectByVisibleText(themeName);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import org.openqa.selenium.support.FindBy;
|
|||
import org.openqa.selenium.support.ui.Select;
|
||||
|
||||
import static java.lang.String.valueOf;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import static org.apache.commons.lang3.text.WordUtils.capitalize;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
|
@ -70,7 +70,7 @@ public class TokenSettings extends RealmSettings {
|
|||
|
||||
private void setTimeout(Select timeoutElement, WebElement unitElement,
|
||||
int timeout, TimeUnit unit) {
|
||||
waitGuiForElement(sessionTimeout);
|
||||
waitUntilElement(sessionTimeout).is().present();
|
||||
timeoutElement.selectByValue(capitalize(unit.name().toLowerCase()));
|
||||
unitElement.clear();
|
||||
unitElement.sendKeys(valueOf(timeout));
|
||||
|
|
|
@ -9,7 +9,7 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import org.keycloak.representations.idm.RoleRepresentation.Composites;
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitGuiForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
@ -127,7 +127,7 @@ public class RoleCompositeRoles extends Form {
|
|||
|
||||
// *** original methods ***
|
||||
public void addAvailableRole(String... roles) {
|
||||
waitGuiForElement(By.id("available"));
|
||||
waitUntilElement(By.id("available")).is().present();
|
||||
for (String role : roles) {
|
||||
availableRealmRolesSelect.selectByVisibleText(role);
|
||||
addSelectedRealmRolesButton.click();
|
||||
|
@ -135,13 +135,13 @@ public class RoleCompositeRoles extends Form {
|
|||
}
|
||||
|
||||
public void removeAssignedRole(String role) {
|
||||
waitGuiForElement(By.id("assigned"));
|
||||
waitUntilElement(By.id("assigned")).is().present();
|
||||
assignedRealmRolesSelect.selectByVisibleText(role);
|
||||
removeSelectedRealmRolesButton.click();
|
||||
}
|
||||
|
||||
public boolean isAssignedRole(String role) {
|
||||
waitGuiForElement(By.id("assigned"));
|
||||
waitUntilElement(By.id("assigned")).is().present();
|
||||
try {
|
||||
assignedRealmRolesSelect.selectByVisibleText(role);
|
||||
} catch (Exception ex) {
|
||||
|
@ -151,7 +151,7 @@ public class RoleCompositeRoles extends Form {
|
|||
}
|
||||
|
||||
public boolean isAssignedClientRole(String role) {
|
||||
waitGuiForElement(By.id("assigned"));
|
||||
waitUntilElement(By.id("assigned")).is().present();
|
||||
try {
|
||||
assignedClientRolesSelect.selectByVisibleText(role);
|
||||
} catch (Exception ex) {
|
||||
|
@ -161,12 +161,12 @@ public class RoleCompositeRoles extends Form {
|
|||
}
|
||||
|
||||
public void selectClientRole(String client) {
|
||||
waitGuiForElement(By.id("clients"));
|
||||
waitUntilElement(By.id("clients")).is().present();
|
||||
clientSelect.selectByVisibleText(client);
|
||||
}
|
||||
|
||||
public void addAvailableClientRole(String... roles) {
|
||||
waitGuiForElement(By.id("available-client"));
|
||||
waitUntilElement(By.id("available-client")).is().present();
|
||||
for (String role : roles) {
|
||||
availableClientRolesSelect.selectByVisibleText(role);
|
||||
addSelectedClientRolesButton.click();
|
||||
|
@ -174,7 +174,7 @@ public class RoleCompositeRoles extends Form {
|
|||
}
|
||||
|
||||
public void removeAssignedClientRole(String client) {
|
||||
waitGuiForElement(By.id("assigned-client"));
|
||||
waitUntilElement(By.id("assigned-client")).is().present();
|
||||
assignedClientRolesSelect.selectByVisibleText(client);
|
||||
removeSelectedClientRolesButton.click();
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class RolesTable extends DataTable {
|
|||
}
|
||||
|
||||
public void clickRole(String name) {
|
||||
waitAjaxForBody();
|
||||
waitForBody();
|
||||
clickRowByLinkText(name);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
|||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
|
||||
import org.keycloak.testsuite.page.Form;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
import org.openqa.selenium.support.ui.Select;
|
||||
|
@ -125,7 +125,7 @@ public class UserAttributesForm extends Form {
|
|||
}
|
||||
|
||||
public void setValues(UserRepresentation user) {
|
||||
waitAjaxForElement(usernameInput);
|
||||
waitUntilElement(usernameInput).is().present();
|
||||
setUsername(user.getUsername());
|
||||
setEmail(user.getEmail());
|
||||
setFirstName(user.getFirstName());
|
||||
|
|
|
@ -27,7 +27,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
|||
|
||||
import org.keycloak.testsuite.console.page.AdminConsoleRealm;
|
||||
import org.keycloak.testsuite.console.page.fragment.DataTable;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import static org.openqa.selenium.By.*;
|
||||
|
||||
/**
|
||||
|
@ -73,7 +73,7 @@ public class Users extends AdminConsoleRealm {
|
|||
}
|
||||
|
||||
public void clickUser(String username) {
|
||||
waitAjaxForElement(body());
|
||||
waitUntilElement(body()).is().present();
|
||||
body().findElement(linkText(username)).click();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package org.keycloak.testsuite.page;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import static org.jboss.arquillian.graphene.Graphene.waitModel;
|
||||
import org.jboss.arquillian.graphene.fragment.Root;
|
||||
import org.jboss.logging.Logger;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author tkyjovsk
|
||||
*/
|
||||
public abstract class AbstractAlert {
|
||||
|
||||
protected final Logger log = Logger.getLogger(this.getClass());
|
||||
|
||||
@Root
|
||||
protected WebElement root;
|
||||
|
||||
public void waitUntilPresent() {
|
||||
waitUntilElement(root, "Flash message should be present.").is().present();
|
||||
}
|
||||
|
||||
public void waitUntilPresentAndClassSet() {
|
||||
waitUntilPresent();
|
||||
waitModel().until(new Predicate<WebDriver>() {
|
||||
@Override
|
||||
public boolean apply(WebDriver input) {
|
||||
return !getAttributeClass().endsWith("alert-");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return root.getText();
|
||||
}
|
||||
|
||||
public String getAttributeClass() {
|
||||
String attrClass = root.getAttribute("class");
|
||||
log.debug("Alert @class = '" + attrClass + "'");
|
||||
return attrClass;
|
||||
}
|
||||
|
||||
public boolean isSuccess() {
|
||||
log.debug("Alert.isSuccess()");
|
||||
return getAttributeClass().contains("alert-success");
|
||||
}
|
||||
|
||||
}
|
|
@ -3,7 +3,7 @@ package org.keycloak.testsuite.page;
|
|||
import org.jboss.arquillian.drone.api.annotation.Drone;
|
||||
import static org.jboss.arquillian.graphene.Graphene.guardAjax;
|
||||
import org.jboss.logging.Logger;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitAjaxForElement;
|
||||
import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
@ -36,14 +36,14 @@ public class Form {
|
|||
}
|
||||
|
||||
public static String getInputValue(WebElement input) {
|
||||
waitAjaxForElement(input);
|
||||
waitUntilElement(input).is().present();
|
||||
return input.getAttribute(VALUE);
|
||||
}
|
||||
|
||||
public static final String VALUE = "value";
|
||||
|
||||
public static void setInputValue(WebElement input, String value) {
|
||||
waitAjaxForElement(input);
|
||||
waitUntilElement(input).is().present();
|
||||
if (input.isEnabled()) {
|
||||
input.clear();
|
||||
if (value != null) {
|
||||
|
|
|
@ -17,11 +17,10 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.util;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import static org.jboss.arquillian.graphene.Graphene.waitAjax;
|
||||
import static org.jboss.arquillian.graphene.Graphene.waitGui;
|
||||
import org.jboss.arquillian.graphene.wait.ElementBuilder;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
|
@ -33,52 +32,19 @@ import org.openqa.selenium.WebElement;
|
|||
public final class WaitUtils {
|
||||
|
||||
public static final String PAGELOAD_TIMEOUT_PROP = "pageload.timeout";
|
||||
public static final String IMPLICIT_TIMEOUT_PROP = "implicit.timeout";
|
||||
public static final String SCRIPT_TIMEOUT_PROP = "script.timeout";
|
||||
public static final String POLLING_INTERVAL_PROP = "polling.interval";
|
||||
|
||||
public static final Integer PAGELOAD_TIMEOUT = Integer.parseInt(System.getProperty(PAGELOAD_TIMEOUT_PROP, "5000"));
|
||||
public static final Integer IMPLICIT_TIMEOUT = Integer.parseInt(System.getProperty(IMPLICIT_TIMEOUT_PROP, "3000"));
|
||||
public static final Integer SCRIPT_TIMEOUT = Integer.parseInt(System.getProperty(SCRIPT_TIMEOUT_PROP, "3000"));
|
||||
public static final Integer PAGELOAD_TIMEOUT = Integer.parseInt(System.getProperty(PAGELOAD_TIMEOUT_PROP, "60000"));
|
||||
|
||||
public static final Integer POLLING_INTERVAL = Integer.parseInt(System.getProperty(POLLING_INTERVAL_PROP, "1000"));
|
||||
|
||||
public static void waitAjaxForElement(WebElement element) {
|
||||
waitAjax().withTimeout(SCRIPT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until().element(element).is().present();
|
||||
public static ElementBuilder<Void> waitUntilElement(By by) {
|
||||
return waitGui().until().element(by);
|
||||
}
|
||||
|
||||
public static void waitAjaxForElementNotPresent(WebElement element) {
|
||||
waitAjax().withTimeout(SCRIPT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until().element(element).is().not().present();
|
||||
public static ElementBuilder<Void> waitUntilElement(WebElement element) {
|
||||
return waitGui().until().element(element);
|
||||
}
|
||||
|
||||
public static void waitAjaxForElementNotVisible(WebElement element) {
|
||||
waitAjax().withTimeout(SCRIPT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until().element(element).is().not().visible();
|
||||
}
|
||||
|
||||
public static void waitGuiForElement(By element, String message) {
|
||||
waitGui().withTimeout(IMPLICIT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until(message).element(element).is().present();
|
||||
}
|
||||
|
||||
public static void waitGuiForElement(By element) {
|
||||
waitGuiForElement(element, null);
|
||||
}
|
||||
|
||||
public static void waitGuiForElement(WebElement element) {
|
||||
waitGuiForElementPresent(element, null);
|
||||
}
|
||||
|
||||
public static void waitGuiForElementPresent(WebElement element, String message) {
|
||||
waitGui().withTimeout(IMPLICIT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until(message).element(element).is().present();
|
||||
}
|
||||
|
||||
public static void waitGuiForElementNotPresent(WebElement element) {
|
||||
waitGui().withTimeout(IMPLICIT_TIMEOUT, TimeUnit.MILLISECONDS).pollingEvery(POLLING_INTERVAL, TimeUnit.MILLISECONDS)
|
||||
.until().element(element).is().not().present();
|
||||
public static ElementBuilder<Void> waitUntilElement(WebElement element, String failMessage) {
|
||||
return waitGui().until(failMessage).element(element);
|
||||
}
|
||||
|
||||
public static void pause(long millis) {
|
||||
|
|
|
@ -19,9 +19,7 @@ package org.keycloak.testsuite;
|
|||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.List;
|
||||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import static org.keycloak.representations.idm.CredentialRepresentation.PASSWORD;
|
||||
|
@ -32,7 +30,6 @@ import static org.keycloak.testsuite.admin.Users.setPasswordFor;
|
|||
import org.keycloak.testsuite.auth.page.AuthRealm;
|
||||
import static org.keycloak.testsuite.auth.page.AuthRealm.TEST;
|
||||
import org.keycloak.testsuite.auth.page.login.OIDCLogin;
|
||||
import org.keycloak.testsuite.console.page.fragment.FlashMessage;
|
||||
import org.openqa.selenium.Cookie;
|
||||
|
||||
/**
|
||||
|
@ -48,9 +45,6 @@ public abstract class AbstractAuthTest extends AbstractKeycloakTest {
|
|||
|
||||
protected UserRepresentation testUser;
|
||||
|
||||
@FindByJQuery(".alert")
|
||||
protected FlashMessage flashMessage;
|
||||
|
||||
@Override
|
||||
public void addTestRealms(List<RealmRepresentation> testRealms) {
|
||||
RealmRepresentation testRealmRep = new RealmRepresentation();
|
||||
|
@ -101,21 +95,6 @@ public abstract class AbstractAuthTest extends AbstractKeycloakTest {
|
|||
}
|
||||
}
|
||||
|
||||
public void assertFlashMessageSuccess() {
|
||||
flashMessage.waitUntilPresent();
|
||||
assertTrue(flashMessage.getText(), flashMessage.isSuccess());
|
||||
}
|
||||
|
||||
public void assertFlashMessageDanger() {
|
||||
flashMessage.waitUntilPresent();
|
||||
assertTrue(flashMessage.getText(), flashMessage.isDanger());
|
||||
}
|
||||
|
||||
public void assertFlashMessageError() {
|
||||
flashMessage.waitUntilPresent();
|
||||
assertTrue(flashMessage.getText(), flashMessage.isError());
|
||||
}
|
||||
|
||||
public RealmResource testRealmResource() {
|
||||
return adminClient.realm(testRealmPage.getAuthRealm());
|
||||
}
|
||||
|
|
|
@ -118,8 +118,6 @@ public abstract class AbstractKeycloakTest {
|
|||
|
||||
protected void driverSettings() {
|
||||
driver.manage().timeouts().pageLoadTimeout(WaitUtils.PAGELOAD_TIMEOUT, TimeUnit.MILLISECONDS);
|
||||
driver.manage().timeouts().implicitlyWait(WaitUtils.IMPLICIT_TIMEOUT, TimeUnit.MILLISECONDS);
|
||||
driver.manage().timeouts().setScriptTimeout(WaitUtils.SCRIPT_TIMEOUT, TimeUnit.MILLISECONDS);
|
||||
driver.manage().window().maximize();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package org.keycloak.testsuite.account;
|
||||
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.keycloak.testsuite.AbstractAuthTest;
|
||||
import static org.keycloak.testsuite.auth.page.AuthRealm.TEST;
|
||||
import org.keycloak.testsuite.auth.page.account.AccountManagement;
|
||||
import org.keycloak.testsuite.auth.page.account.fragment.AccountManagementAlert;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -15,6 +18,9 @@ public abstract class AbstractAccountManagementTest extends AbstractAuthTest {
|
|||
@Page
|
||||
protected AccountManagement testRealmAccountManagementPage;
|
||||
|
||||
@FindBy(className = "alert")
|
||||
protected AccountManagementAlert alert;
|
||||
|
||||
@Override
|
||||
public void setDefaultPageUriParameters() {
|
||||
super.setDefaultPageUriParameters();
|
||||
|
@ -28,4 +34,14 @@ public abstract class AbstractAccountManagementTest extends AbstractAuthTest {
|
|||
createTestUserWithAdminClient();
|
||||
}
|
||||
|
||||
public void assertAlertSuccess() {
|
||||
alert.waitUntilPresentAndClassSet();
|
||||
assertTrue(alert.isSuccess());
|
||||
}
|
||||
|
||||
public void assertAlertError() {
|
||||
alert.waitUntilPresentAndClassSet();
|
||||
assertTrue(alert.isError());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ public class AccountTest extends AbstractAccountManagementTest {
|
|||
testRealmAccountPage.setFirstName(NEW_FIRST_NAME);
|
||||
testRealmAccountPage.setLastName(NEW_LAST_NAME);
|
||||
testRealmAccountPage.save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountManagementPage.signOut();
|
||||
testRealmLoginPage.form().login(testUser);
|
||||
|
|
|
@ -38,20 +38,20 @@ public class ChangePasswordTest extends AbstractAccountManagementTest {
|
|||
@Test
|
||||
public void invalidChangeAttempts() {
|
||||
testRealmChangePasswordPage.save();
|
||||
assertFlashMessageError();
|
||||
assertAlertError();
|
||||
|
||||
testRealmChangePasswordPage.changePasswords(WRONG_PASSWORD, NEW_PASSWORD, NEW_PASSWORD);
|
||||
assertFlashMessageError();
|
||||
assertAlertError();
|
||||
|
||||
testRealmChangePasswordPage.changePasswords(correctPassword, NEW_PASSWORD, NEW_PASSWORD + "-mismatch");
|
||||
assertFlashMessageError();
|
||||
assertAlertError();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void successfulChangeAttempts() {
|
||||
// change password successfully
|
||||
testRealmChangePasswordPage.changePasswords(correctPassword, NEW_PASSWORD, NEW_PASSWORD);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
// login using new password
|
||||
testRealmAccountManagementPage.signOut();
|
||||
|
@ -61,7 +61,7 @@ public class ChangePasswordTest extends AbstractAccountManagementTest {
|
|||
// change password back
|
||||
testRealmAccountManagementPage.password();
|
||||
testRealmChangePasswordPage.changePasswords(NEW_PASSWORD, correctPassword, correctPassword);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.console;
|
||||
|
||||
import org.jboss.arquillian.graphene.findby.FindByJQuery;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.AbstractAuthTest;
|
||||
|
@ -27,6 +29,7 @@ import org.keycloak.testsuite.console.page.AdminConsoleRealm.ConfigureMenu;
|
|||
import org.keycloak.testsuite.console.page.AdminConsoleRealm.ManageMenu;
|
||||
import static org.keycloak.testsuite.auth.page.AuthRealm.TEST;
|
||||
import org.keycloak.testsuite.auth.page.login.Login;
|
||||
import org.keycloak.testsuite.console.page.fragment.AdminConsoleAlert;
|
||||
import org.keycloak.testsuite.console.page.fragment.ModalDialog;
|
||||
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLoginUrlOf;
|
||||
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
|
||||
|
@ -50,6 +53,9 @@ public abstract class AbstractConsoleTest extends AbstractAuthTest {
|
|||
@FindBy(xpath = "//div[@class='modal-dialog']")
|
||||
protected ModalDialog modalDialog;
|
||||
|
||||
@FindBy(className = "alert")
|
||||
protected AdminConsoleAlert alert;
|
||||
|
||||
protected boolean adminLoggedIn = false;
|
||||
|
||||
@Override
|
||||
|
@ -100,6 +106,18 @@ public abstract class AbstractConsoleTest extends AbstractAuthTest {
|
|||
assertCurrentUrlStartsWithLoginUrlOf(adminConsole);
|
||||
}
|
||||
|
||||
public void assertAlertSuccess() {
|
||||
alert.waitUntilPresentAndClassSet();
|
||||
assertTrue(alert.isSuccess());
|
||||
alert.close();
|
||||
}
|
||||
|
||||
public void assertAlertDanger() {
|
||||
alert.waitUntilPresentAndClassSet();
|
||||
assertTrue(alert.isDanger());
|
||||
alert.close();
|
||||
}
|
||||
|
||||
public ConfigureMenu configure() {
|
||||
return adminConsoleRealmPage.configure();
|
||||
}
|
||||
|
|
|
@ -50,18 +50,18 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
passwordPolicyPage.navigateTo();
|
||||
passwordPolicyPage.addPolicy(HASH_ITERATIONS, 5);
|
||||
passwordPolicyPage.removePolicy(HASH_ITERATIONS);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidPolicyValues() {
|
||||
passwordPolicyPage.navigateTo();
|
||||
passwordPolicyPage.addPolicy(HASH_ITERATIONS, "asd");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
passwordPolicyPage.removePolicy(HASH_ITERATIONS);
|
||||
|
||||
passwordPolicyPage.addPolicy(REGEX_PATTERN, "([");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -72,10 +72,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("1234567");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("12345678");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -86,10 +86,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("invalidPassword1");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("validPassword12");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -100,10 +100,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("iNVALIDPASSWORD");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("vaLIDPASSWORD");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -114,10 +114,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("Invalidpassword");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("VAlidpassword");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -128,10 +128,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("invalidPassword*");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("validPassword*#");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -142,10 +142,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword(testUser.getUsername());
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("validpassword");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -156,10 +156,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("invalidPassword");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
testUserCredentialsPage.resetPassword("VALID#password");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -170,13 +170,13 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
|
|||
|
||||
testUserCredentialsPage.navigateTo();
|
||||
testUserCredentialsPage.resetPassword("firstPassword");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testUserCredentialsPage.resetPassword("secondPassword");
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testUserCredentialsPage.resetPassword("firstPassword");
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ public class RequiredActionsTest extends AbstractConsoleTest {
|
|||
public void termsAndConditionsDefaultActionTest() {
|
||||
requiredActionsPage.setTermsAndConditionEnabled(true);
|
||||
requiredActionsPage.setTermsAndConditionDefaultAction(true);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
allowTestRealmUserRegistration();
|
||||
|
||||
|
@ -74,7 +74,7 @@ public class RequiredActionsTest extends AbstractConsoleTest {
|
|||
@Test
|
||||
public void configureTotpDefaultActionTest() {
|
||||
requiredActionsPage.setConfigureTotpDefaultAction(true);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
allowTestRealmUserRegistration();
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ public class ClientRolesTest extends AbstractClientTest {
|
|||
// assertCurrentUrl(createClientRole); // can't do this, need client id to build uri
|
||||
createClientRolePage.form().setBasicAttributes(roleRep);
|
||||
createClientRolePage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
createClientRolePage.form().setCompositeRoles(roleRep);
|
||||
// TODO add verification of notification message when KEYCLOAK-1497 gets resolved
|
||||
}
|
||||
|
@ -47,11 +47,10 @@ public class ClientRolesTest extends AbstractClientTest {
|
|||
RoleRepresentation newRole = new RoleRepresentation("client-role", "", false);
|
||||
|
||||
createClient(newClient);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
clientPage.tabs().roles();
|
||||
addClientRole(newRole);
|
||||
assertFlashMessageSuccess();
|
||||
|
||||
clientRolePage.backToClientRolesViaBreadcrumb();
|
||||
assertFalse(clientRolesPage.roles().getRolesFromTableRows().isEmpty());
|
||||
|
@ -60,7 +59,7 @@ public class ClientRolesTest extends AbstractClientTest {
|
|||
clientsPage.table().search(newClient.getClientId());
|
||||
clientsPage.table().deleteClient(newClient.getClientId());
|
||||
modalDialog.confirmDeletion();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
assertNull(clientsPage.table().findClient(newClient.getClientId()));
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ public class ClientSettingsTest extends AbstractClientTest {
|
|||
public void crudOIDCConfidential() {
|
||||
newClient = createClientRepresentation("oidc-confidential", "http://example.test/app/*");
|
||||
createClient(newClient);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
clientPage.backToClientsViaBreadcrumb();
|
||||
assertCurrentUrlEquals(clientsPage);
|
||||
|
@ -70,7 +70,7 @@ public class ClientSettingsTest extends AbstractClientTest {
|
|||
newClient = createClientRepresentation("oidc-public", "http://example.test/app/*");
|
||||
newClient.setPublicClient(true);
|
||||
createClient(newClient);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
clientPage.backToClientsViaBreadcrumb();
|
||||
assertCurrentUrlEquals(clientsPage);
|
||||
|
@ -81,7 +81,7 @@ public class ClientSettingsTest extends AbstractClientTest {
|
|||
newClient = createClientRepresentation("oidc-bearer-only", "http://example.test/app/*");
|
||||
newClient.setBearerOnly(true);
|
||||
createClient(newClient);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
clientPage.backToClientsViaBreadcrumb();
|
||||
assertCurrentUrlEquals(clientsPage);
|
||||
|
@ -99,11 +99,11 @@ public class ClientSettingsTest extends AbstractClientTest {
|
|||
public void invalidSettings() {
|
||||
clientsPage.table().createClient();
|
||||
createClientPage.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
createClientPage.form().setClientId("test-client");
|
||||
createClientPage.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
public void assertClientSettingsEqual(ClientRepresentation c1, ClientRepresentation c2) {
|
||||
|
|
|
@ -30,7 +30,7 @@ public class ConfigTest extends AbstractConsoleTest {
|
|||
configPage.form().removeSaveType("LOGIN");
|
||||
configPage.form().setExpiration("50", "Days");
|
||||
configPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
RealmRepresentation realm = testRealmResource().toRepresentation();
|
||||
assertTrue(realm.isEventsEnabled());
|
||||
|
@ -44,7 +44,7 @@ public class ConfigTest extends AbstractConsoleTest {
|
|||
configPage.form().setSaveAdminEvents(true);
|
||||
configPage.form().setIncludeRepresentation(true);
|
||||
configPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
RealmRepresentation realm = testRealmResource().toRepresentation();
|
||||
assertTrue(realm.isAdminEventsEnabled());
|
||||
|
|
|
@ -33,7 +33,7 @@ public class KerberosUserFederationTest extends AbstractConsoleTest {
|
|||
createKerberosUserProvider.form().selectEditMode(READ_ONLY);
|
||||
createKerberosUserProvider.form().setUpdateProfileFirstLogin(true);
|
||||
createKerberosUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
RealmRepresentation realm = testRealmResource().toRepresentation();
|
||||
UserFederationProviderRepresentation ufpr = realm.getUserFederationProviders().get(0);
|
||||
assertKerberosSetings(ufpr, "KEYCLOAK.ORG", "HTTP/localhost@KEYCLOAK.ORG", "http.keytab", "true", "true", "true");
|
||||
|
@ -50,18 +50,18 @@ public class KerberosUserFederationTest extends AbstractConsoleTest {
|
|||
createKerberosUserProvider.form().selectEditMode(UNSYNCED);
|
||||
createKerberosUserProvider.form().setUpdateProfileFirstLogin(true);
|
||||
createKerberosUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createKerberosUserProvider.form().setServerPrincipalInput("");
|
||||
createKerberosUserProvider.form().setKerberosRealmInput("KEYCLOAK.ORG");;
|
||||
createKerberosUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createKerberosUserProvider.form().setServerPrincipalInput("HTTP/localhost@KEYCLOAK.ORG");;
|
||||
createKerberosUserProvider.form().setKeyTabInput("");
|
||||
createKerberosUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createKerberosUserProvider.form().setKeyTabInput("http.keytab");;
|
||||
createKerberosUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
private void assertKerberosSetings(UserFederationProviderRepresentation ufpr, String kerberosRealm, String serverPrincipal, String keyTab, String debug, String useKerberosForPasswordAuthentication, String updateProfileFirstLogin) {
|
||||
|
|
|
@ -49,7 +49,7 @@ public class LdapUserFederationTest extends AbstractConsoleTest {
|
|||
createLdapUserProvider.form().setKeyTabInput("http.keytab");
|
||||
createLdapUserProvider.form().setDebugEnabled(true);
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
RealmRepresentation realm = testRealmResource().toRepresentation();
|
||||
UserFederationProviderRepresentation ufpr = realm.getUserFederationProviders().get(0);
|
||||
|
@ -71,7 +71,7 @@ public class LdapUserFederationTest extends AbstractConsoleTest {
|
|||
createLdapUserProvider.form().setLdapUserDnInput("ou=People,dc=keycloak,dc=org");
|
||||
createLdapUserProvider.form().setLdapBindCredentialInput("secret");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
RealmRepresentation realm = testRealmResource().toRepresentation();
|
||||
UserFederationProviderRepresentation ufpr = realm.getUserFederationProviders().get(0);
|
||||
|
@ -92,22 +92,22 @@ public class LdapUserFederationTest extends AbstractConsoleTest {
|
|||
createLdapUserProvider.form().setLdapUserDnInput("ou=People,dc=keycloak,dc=org");
|
||||
createLdapUserProvider.form().setLdapBindCredentialInput("secret");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createLdapUserProvider.form().setLdapUserDnInput("");
|
||||
createLdapUserProvider.form().setLdapConnectionUrlInput("ldap://localhost:389");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createLdapUserProvider.form().setLdapUserDnInput("ou=People,dc=keycloak,dc=org");
|
||||
createLdapUserProvider.form().setLdapBindDnInput("");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createLdapUserProvider.form().setLdapBindDnInput("uid=admin,ou=system");
|
||||
createLdapUserProvider.form().setLdapBindCredentialInput("");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
createLdapUserProvider.form().setLdapBindCredentialInput("secret");
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -122,19 +122,19 @@ public class LdapUserFederationTest extends AbstractConsoleTest {
|
|||
createLdapUserProvider.form().setLdapBindCredentialInput("secret");
|
||||
createLdapUserProvider.form().setAccountAfterPasswordUpdateEnabled(true);
|
||||
createLdapUserProvider.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
LDAPEmbeddedServer ldapServer = null;
|
||||
try {
|
||||
ldapServer = startEmbeddedLdapServer();
|
||||
createLdapUserProvider.form().testConnection();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
createLdapUserProvider.form().testAuthentication();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
createLdapUserProvider.form().synchronizeAllUsers();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
createLdapUserProvider.form().setLdapBindCredentialInput("secret1");
|
||||
createLdapUserProvider.form().testAuthentication();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
} finally {
|
||||
if (ldapServer != null) {
|
||||
ldapServer.stop();
|
||||
|
|
|
@ -38,8 +38,7 @@ public class IdentityProviderTest extends AbstractConsoleTest {
|
|||
// @Test
|
||||
public void testAddNewProvider() {
|
||||
idpSettingsPage.addNewProvider(new Provider(SocialProvider.FACEBOOK, "klic", "secret"));
|
||||
flashMessage.waitUntilPresent();
|
||||
assertTrue("Success message should be displayed", flashMessage.isSuccess());
|
||||
assertAlertSuccess();
|
||||
}
|
||||
|
||||
// @Test(expected = NoSuchElementException.class)
|
||||
|
|
|
@ -74,7 +74,7 @@ public class SecurityDefensesTest extends AbstractRealmTest {
|
|||
bruteForceDetectionPage.form().setWaitIncrementSelect(BruteForceDetection.TimeSelectValues.SECONDS);
|
||||
bruteForceDetectionPage.form().setWaitIncrementInput(String.valueOf(secondsToWait));
|
||||
bruteForceDetectionPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
@ -115,7 +115,7 @@ public class SecurityDefensesTest extends AbstractRealmTest {
|
|||
bruteForceDetectionPage.form().setMinQuickLoginWaitSelect(BruteForceDetection.TimeSelectValues.SECONDS);
|
||||
bruteForceDetectionPage.form().setMinQuickLoginWaitInput(String.valueOf(secondsToWait));
|
||||
bruteForceDetectionPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
@ -195,7 +195,7 @@ public class SecurityDefensesTest extends AbstractRealmTest {
|
|||
bruteForceDetectionPage.form().setFailureResetTimeSelect(BruteForceDetection.TimeSelectValues.SECONDS);
|
||||
bruteForceDetectionPage.form().setFailureResetTimeInput(String.valueOf(secondsToWait));
|
||||
bruteForceDetectionPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
@ -228,7 +228,7 @@ public class SecurityDefensesTest extends AbstractRealmTest {
|
|||
bruteForceDetectionPage.form().setWaitIncrementSelect(BruteForceDetection.TimeSelectValues.MINUTES);
|
||||
bruteForceDetectionPage.form().setWaitIncrementInput("10");
|
||||
bruteForceDetectionPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ public class DefaultRolesTest extends AbstractRolesTest {
|
|||
String defaultRoleName = defaultRoleRep.getName();
|
||||
|
||||
defaultRolesPage.form().addAvailableRole(defaultRoleName);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
UserRepresentation newUser = new UserRepresentation();
|
||||
newUser.setUsername("new_user");
|
||||
|
|
|
@ -42,7 +42,7 @@ public class RealmRolesTest extends AbstractRolesTest {
|
|||
assertCurrentUrlEquals(createRolePage);
|
||||
createRolePage.form().setBasicAttributes(roleRep);
|
||||
createRolePage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
createRolePage.form().setCompositeRoles(roleRep);
|
||||
// TODO add verification of notification message when KEYCLOAK-1497 gets resolved
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ public class RealmRolesTest extends AbstractRolesTest {
|
|||
// assertCurrentUrl(role); // can't do this, role id needed as uri param
|
||||
rolePage.form().setBasicAttributes(roleRep);
|
||||
rolePage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
rolePage.form().setCompositeRoles(roleRep);
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,7 @@ public class RealmRolesTest extends AbstractRolesTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void crudRole() {
|
||||
addRole(testRole);
|
||||
|
||||
|
@ -77,7 +78,7 @@ public class RealmRolesTest extends AbstractRolesTest {
|
|||
testRole.setDescription("updated role description");
|
||||
rolePage.form().setDescription(testRole.getDescription());
|
||||
rolePage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
configure().roles();
|
||||
foundRole = realmRolesPage.table().findRole(testRole.getName()); // search & get role from table
|
||||
|
@ -111,13 +112,12 @@ public class RealmRolesTest extends AbstractRolesTest {
|
|||
@Test
|
||||
public void testAddExistingRole() {
|
||||
addRole(testRole);
|
||||
assertFlashMessageSuccess();
|
||||
|
||||
configure().roles();
|
||||
realmRolesPage.table().addRole();
|
||||
createRolePage.form().setBasicAttributes(testRole);
|
||||
createRolePage.form().save();
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
public void createTestRoles(String namePrefix, int count) {
|
||||
|
|
|
@ -67,7 +67,7 @@ public class RequiredUserActionsTest extends AbstractUserTest {
|
|||
public void updatePassword() {
|
||||
userAttributesPage.form().addRequiredAction(UPDATE_PASSWORD.getActionName());
|
||||
userAttributesPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
@ -91,7 +91,7 @@ public class RequiredUserActionsTest extends AbstractUserTest {
|
|||
public void updateProfile() {
|
||||
userAttributesPage.form().addRequiredAction(UPDATE_PROFILE.getActionName());
|
||||
userAttributesPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
@ -128,7 +128,7 @@ public class RequiredUserActionsTest extends AbstractUserTest {
|
|||
|
||||
userAttributesPage.form().addRequiredAction(TERMS_AND_CONDITIONS.getActionName());
|
||||
userAttributesPage.form().save();
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
testRealmAccountPage.navigateTo();
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ public class UserAttributesTest extends AbstractUserTest {
|
|||
setPasswordFor(newTestRealmUser, "pass");
|
||||
newTestRealmUser.setEmail(invalidEmail);
|
||||
createUser(newTestRealmUser);
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
|
||||
userAttributesPage.backToUsersViaBreadcrumb();
|
||||
assertNull(usersPage.table().findUser(testUsername));
|
||||
|
@ -58,7 +58,7 @@ public class UserAttributesTest extends AbstractUserTest {
|
|||
@Test
|
||||
public void noUsername() {
|
||||
createUser(newTestRealmUser);
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -66,7 +66,7 @@ public class UserAttributesTest extends AbstractUserTest {
|
|||
String testUsername = "test_duplicated_user";
|
||||
newTestRealmUser.setUsername(testUsername);
|
||||
createUser(newTestRealmUser);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
|
||||
userAttributesPage.backToUsersViaBreadcrumb();
|
||||
assertNotNull(usersPage.table().findUser(testUsername));
|
||||
|
@ -74,7 +74,7 @@ public class UserAttributesTest extends AbstractUserTest {
|
|||
UserRepresentation testUser2 = new UserRepresentation();
|
||||
testUser2.setUsername(testUsername);
|
||||
createUser(testUser2);
|
||||
assertFlashMessageDanger();
|
||||
assertAlertDanger();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -83,7 +83,7 @@ public class UserAttributesTest extends AbstractUserTest {
|
|||
disabledUser.setEnabled(false);
|
||||
disabledUser.setUsername("disabled_user");
|
||||
createUser(disabledUser);
|
||||
assertFlashMessageSuccess();
|
||||
assertAlertSuccess();
|
||||
// TODO try to log in
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,13 @@
|
|||
<property name="browser">${browser}</property>
|
||||
</extension>
|
||||
|
||||
<extension qualifier="graphene">
|
||||
<property name="waitGuiInterval">5</property>
|
||||
<property name="waitAjaxInterval">5</property>
|
||||
<property name="waitModelInterval">10</property>
|
||||
<property name="waitGuardInterval">5</property>
|
||||
</extension>
|
||||
|
||||
<extension qualifier="graphene-secondbrowser">
|
||||
<property name="browser">${browser}</property>
|
||||
</extension>
|
||||
|
|
|
@ -609,6 +609,7 @@
|
|||
</pluginManagement>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
</profiles>
|
||||
|
||||
</project>
|
||||
|
|
Loading…
Reference in a new issue