/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapter.page;
import org.jboss.arquillian.container.test.api.OperateOnDeployment;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.keycloak.testsuite.page.AbstractPageWithInjectedUrl;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.Select;
import java.net.URL;
/**
*
* @author tkyjovsk
*/
public class JSConsoleTestApp extends AbstractPageWithInjectedUrl {
public static final String DEPLOYMENT_NAME = "js-console-example";
public static final String CLIENT_ID = "integration-arquillian-test-apps-js-console";
@ArquillianResource
@OperateOnDeployment(DEPLOYMENT_NAME)
private URL url;
@Override
public URL getInjectedUrl() {
//EAP6 URL fix
URL fixedUrl = createInjectedURL("js-console");
return fixedUrl != null ? fixedUrl : url;
}
@FindBy(xpath = "//button[text() = 'Init']")
private WebElement initButton;
@FindBy(xpath = "//button[text() = 'Init with both tokens']")
private WebElement initWithBothTokens;
@FindBy(xpath = "//button[text() = 'Init with refresh token']")
private WebElement initWithRefreshToken;
@FindBy(xpath = "//button[text() = 'Init with TimeSkew']")
private WebElement initWithTimeSkew;
@FindBy(xpath = "//button[text() = 'Init with different realm name']")
private WebElement initWithDifferentRealmName;
@FindBy(xpath = "//button[text() = 'Login']")
private WebElement logInButton;
@FindBy(xpath = "//button[text() = 'Logout']")
private WebElement logOutButton;
@FindBy(xpath = "//button[text() = 'Refresh Token']")
private WebElement refreshTokenButton;
@FindBy(xpath = "//button[contains(text(),'Refresh Token (if <30s')]")
private WebElement refreshTokenIfUnder30sButton;
@FindBy(xpath = "//button[contains(text(),'Refresh Token (if <5s')]")
private WebElement refreshTokenIfUnder5sButton;
@FindBy(xpath = "//button[text() = 'Get Profile']")
private WebElement getProfileButton;
@FindBy(xpath = "//button[text() = 'Show Error Response']")
private WebElement showErrorButton;
@FindBy(xpath = "//button[text() = 'Show Token']")
private WebElement showTokenButton;
@FindBy(xpath = "//button[text() = 'Show Refresh Token']")
private WebElement showRefreshTokenButton;
@FindBy(xpath = "//button[text() = 'Show ID Token']")
private WebElement showIdTokenButton;
@FindBy(xpath = "//button[text() = 'Show Expires']")
private WebElement showExpiresButton;
@FindBy(xpath = "//button[text() = 'Show Details']")
private WebElement showDetailsButton;
@FindBy(xpath = "//button[text() = 'Create Bearer Request']")
private WebElement createBearerRequest;
@FindBy(xpath = "//button[text() = 'Bearer to keycloak']")
private WebElement createBearerRequestToKeycloakButton;
@FindBy(xpath = "//button[text() = 'Cert request']")
private WebElement certRequestButton;
@FindBy(xpath = "//button[text() = 'refresh timeSkew']")
private WebElement refreshTimeSkewButton;
@FindBy(xpath = "//button[text() = 'Create user']")
private WebElement createUserButton;
@FindBy(xpath = "//button[text() = 'Reentrancy callback']")
private WebElement reentrancyCallbackButton;
@FindBy(id = "timeSkew")
private WebElement timeSkewValue;
@FindBy(id = "inputField")
private WebElement generalInput;
@FindBy(id = "inputField2")
private WebElement generalInput2;
@FindBy(id = "inputField3")
private WebElement generalInput3;
@FindBy(xpath = "//button[text() = 'timeSkew offset']")
private WebElement timeSkewButton;
@FindBy(id = "flowSelect")
private Select flowSelect;
@FindBy(id = "responseModeSelect")
private Select responseModeSelect;
@FindBy(id = "onLoad")
private Select onLoad;
@FindBy(id = "output")
private WebElement outputArea;
@FindBy(id = "events")
private WebElement eventsArea;
public void logIn() {
logInButton.click();
}
public void logOut() {
logOutButton.click();
}
public void refreshToken() {
refreshTokenButton.click();
}
public void refreshTokenIfUnder30s() {
refreshTokenIfUnder30sButton.click();
}
public void refreshTokenIfUnder5s() {
refreshTokenIfUnder5sButton.click();
}
public void getProfile() {
getProfileButton.click();
}
public void setFlow(String value) {
flowSelect.selectByValue(value);
}
public void setOnLoad(String value) {
onLoad.selectByValue(value);
}
public void init() {
initButton.click();
}
public void initWithBothTokens() {
initWithBothTokens.click();
}
public void initWithRefreshToken() {
initWithRefreshToken.click();
}
public void initWithTimeSkew() {
initWithTimeSkew.click();
}
public void initWithDifferentRealmName() {
initWithDifferentRealmName.click();
}
public void createBearerRequest() {
createBearerRequest.click();
}
public void createBearerRequestToKeycloak() {
createBearerRequestToKeycloakButton.click();
}
public void setResponseMode(String value) {
responseModeSelect.selectByValue(value);
}
public WebElement getOutputElement() {
return outputArea;
}
public WebElement getEventsElement() {
return eventsArea;
}
public WebElement getInitButtonElement() {
return initButton;
}
public void showErrorResponse() {
showErrorButton.click();
}
public WebElement getTimeSkewValue() {
return timeSkewValue;
}
public void setInput(String value) {
generalInput.clear();
generalInput.sendKeys(value);
}
public void setInput2(String value) {
generalInput2.clear();
generalInput2.sendKeys(value);
}
public void setInput3(String value) {
generalInput3.clear();
generalInput3.sendKeys(value);
}
public void setInput(int value) {
setInput(Integer.toString(value));
}
public void setTimeSkew(int value) {
setInput(value);
timeSkewButton.click();
}
public void refreshTimeSkew() {
refreshTimeSkewButton.click();
}
public void createUserRequest() {
createUserButton.click();
}
public void sendCertRequest() {
certRequestButton.click();
}
public void callReentrancyCallback() {
reentrancyCallbackButton.click();
}
}