package org.keycloak.testsuite.console.page.realm; import org.jboss.arquillian.graphene.findby.FindByJQuery; import org.jboss.arquillian.graphene.page.Page; import org.keycloak.testsuite.console.page.fragment.OnOffSwitch; import org.keycloak.testsuite.page.Form; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.Select; /** * @author mhajas */ public class BruteForceDetection extends SecurityDefenses { @Override public String getUriFragment() { return super.getUriFragment() + "/brute-force"; } @Page private BruteForceDetectionForm form; public BruteForceDetectionForm form() { return form; } public class BruteForceDetectionForm extends Form { @FindByJQuery("div[class='onoffswitch']") private OnOffSwitch protectionEnabled; @FindBy(id = "failureFactor") private WebElement maxLoginFailures; @FindBy(id = "waitIncrement") private WebElement waitIncrementInput; @FindBy(name = "waitIncrementUnit") private Select waitIncrementSelect; @FindBy(id = "quickLoginCheckMilliSeconds") private WebElement quickLoginCheckInput; @FindBy(id = "minimumQuickLoginWait") private WebElement minQuickLoginWaitInput; @FindBy(name = "minimumQuickLoginWaitUnit") private Select minQuickLoginWaitSelect; @FindBy(id = "maxFailureWait") private WebElement maxWaitInput; @FindBy(name = "maxFailureWaitUnit") private Select maxWaitSelect; @FindBy(id = "maxDeltaTime") private WebElement failureResetTimeInput; @FindBy(name = "maxDeltaTimeUnit") private Select failureResetTimeSelect; public void setProtectionEnabled(boolean protectionEnabled) { this.protectionEnabled.setOn(protectionEnabled); } public void setMaxLoginFailures(String value) { setInputValue(maxLoginFailures, value); } public void setWaitIncrementInput(String value) { setInputValue(waitIncrementInput, value); } public void setWaitIncrementSelect(TimeSelectValues value) { waitIncrementSelect.selectByValue(value.getName()); } public void setQuickLoginCheckInput(String value) { setInputValue(quickLoginCheckInput, value); } public void setMinQuickLoginWaitInput(String value) { setInputValue(minQuickLoginWaitInput, value); } public void setMinQuickLoginWaitSelect(TimeSelectValues value) { minQuickLoginWaitSelect.selectByValue(value.getName()); } public void setMaxWaitInput(String value) { setInputValue(maxWaitInput, value); } public void setMaxWaitSelect(TimeSelectValues value) { maxWaitSelect.selectByValue(value.getName()); } public void setFailureResetTimeInput(String value) { setInputValue(failureResetTimeInput, value); } public void setFailureResetTimeSelect(TimeSelectValues value) { failureResetTimeSelect.selectByValue(value.getName()); } } public enum TimeSelectValues { SECONDS("Seconds"), MINUTES("Minutes"), HOURS("Hours"), DAYS("Days"); private String name; private TimeSelectValues(String name) { this.name = name; } public String getName() { return name; } } }