package org.keycloak.testsuite.console.page.authentication.flows;
import org.keycloak.testsuite.console.page.authentication.Authentication;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.Select;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author tkyjovsk
* @author mhajas
* @author pzaoral
*/
public class Flows extends Authentication {
@Override
public String getUriFragment() {
return super.getUriFragment() + "/flows";
}
@FindBy(tagName = "select")
private Select flowSelect;
@FindBy(xpath = ".//button[@data-ng-click='createFlow()']")
private WebElement newButton;
@FindBy(xpath = ".//button[@data-ng-click='copyFlow()']")
private WebElement copyButton;
@FindBy(xpath = ".//button[@data-ng-click='deleteFlow()']")
private WebElement deleteButton;
@FindBy(xpath = ".//button[@data-ng-click='addExecution()']")
private WebElement addExecutionButton;
@FindBy(xpath = ".//button[@data-ng-click='addFlow()']")
private WebElement addFlowButton;
@FindBy(tagName = "table")
private FlowsTable flowsTable;
public enum FlowOption {
DIRECT_GRANT("Direct Grant"),
REGISTRATION("Registration"),
BROWSER("Browser"),
RESET_CREDENTIALS("Reset Credentials"),
CLIENTS("Clients");
private final String name;
private FlowOption(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public void selectFlowOption(FlowOption option) {
flowSelect.selectByVisibleText(option.getName());
}
public String getFlowSelectValue() {
return flowSelect.getFirstSelectedOption().getText();
}
public List<String> getFlowAllValues() {
return flowSelect.getOptions().stream().map(WebElement::getText).collect(Collectors.toList());
}
public FlowsTable table() {
return flowsTable;
}
public void clickNew() {
newButton.click();
}
public void clickCopy() {
copyButton.click();
}
public void clickDelete() {
deleteButton.click();
}
public void clickAddExecution() {
addExecutionButton.click();
}
public void clickAddFlow() {
addFlowButton.click();
}
}