/*
* 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.console.page.events;
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 static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
/**
* @author tkyjovsk
* @author mhajas
*/
public class Config extends Events {
@Override
public String getUriFragment() {
return super.getUriFragment() + "/events-settings";
}
@FindBy(xpath = "//form")
private ConfigForm form;
public ConfigForm form() {
return form;
}
public class ConfigForm extends Form {
@FindBy(id = "s2id_autogen1")
private WebElement eventListenersInput;
@FindBy(xpath = "//div[@id='s2id_autogen1']/..//select")
private Select eventListenersSelect;
@FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='enabled']]")
private OnOffSwitch SaveEvents;
@FindBy(xpath = "//div[@id='s2id_enabledEventTypes']//input")
private WebElement savedTypesInput;
@FindBy(xpath = "//div[@id='select2-drop']/ul")
private WebElement savedTypesOptions;
@FindBy(id = "expiration")
private WebElement expirationInput;
@FindBy(name = "expirationUnit")
private Select expirationUnitSelect;
@FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='adminEventsEnabled']]")
private OnOffSwitch saveAdminEvents;
@FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='adminEventsDetailsEnabled']]")
private OnOffSwitch includeRepresentation;
@FindBy(xpath = "//button[@data-ng-click='clearEvents()']")
private WebElement clearLoginEventsButton;
@FindBy(xpath = "//button[@data-ng-click='clearAdminEvents()']")
private WebElement clearAdminEventsButton;
public void addEventListener(String listener) {
eventListenersInput.click();
eventListenersSelect.selectByVisibleText(listener);
}
public void removeEventListener(String listener) {
eventListenersInput.findElement(By.xpath("//div[text()='" + listener + "']/../a")).click();
}
public void setSaveEvents(boolean value) {
SaveEvents.setOn(value);
}
public void addSaveType(String type) {
savedTypesInput.click();
savedTypesOptions.findElement(By.xpath("//div[text()='" + type + "']")).click();
}
public void removeSaveType(String type) {
savedTypesInput.findElement(By.xpath("//div[text()='" + type + "']/../a")).click();
}
public void clearLoginEvents() {
clearLoginEventsButton.click();
}
public void setExpiration(String value, String unit) {
expirationUnitSelect.selectByVisibleText(unit);
Form.setInputValue(expirationInput, value);
}
public void setSaveAdminEvents(boolean value) {
saveAdminEvents.setOn(value);
}
public void setIncludeRepresentation(boolean value) {
includeRepresentation.setOn(value);
}
public void clearAdminEvents() {
clearAdminEventsButton.click();
}
public void waitForClearEventsButtonPresent() {
waitUntilElement(clearLoginEventsButton).is().present();
}
}
}