keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappers.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappers.java
new file mode 100644
index 0000000..962e7a5
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappers.java
@@ -0,0 +1,21 @@
+package org.keycloak.testsuite.console.page.clients;
+
+import org.jboss.arquillian.graphene.page.Page;
+import org.keycloak.testsuite.console.page.AdminConsoleCreate;
+
+/**
+ * @author Vaclav Muzikar <vmuzikar@redhat.com>
+ */
+public class CreateClientMappers extends AdminConsoleCreate {
+
+    @Page
+    private CreateClientMappersForm form;
+
+    public CreateClientMappers() {
+        setEntity("mappers");
+    }
+
+    public CreateClientMappersForm form() {
+        return form;
+    }
+}
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappersForm.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappersForm.java
new file mode 100644
index 0000000..8670a50
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientMappersForm.java
@@ -0,0 +1,124 @@
+package org.keycloak.testsuite.console.page.clients;
+
+import org.jboss.arquillian.test.api.ArquillianResource;
+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.interactions.Actions;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.ui.Select;
+
+import java.util.List;
+
+/**
+ * @author Vaclav Muzikar <vmuzikar@redhat.com>
+ *
+ * TODO: SAML
+ */
+public class CreateClientMappersForm extends Form {
+
+    // Mappers types
+    public static final String HARDCODED_ROLE = "Hardcoded Role";
+    public static final String HARDCODED_CLAIM = "Hardcoded claim";
+    public static final String USER_SESSION_NOTE = "User Session Note";
+    public static final String ROLE_NAME_MAPPER = "Role Name Mapper";
+    public static final String USER_ADDRESS = "User Address";
+    public static final String USERS_FULL_NAME = "User's full name";
+    public static final String USER_ATTRIBUTE = "User Attribute";
+    public static final String USER_PROPERTY = "User Property";
+
+    // Attributes labels
+    public final static String PROPERTY_LABEL = "Property";
+    public final static String USER_ATTRIBUTE_LABEL = "User Attribute";
+    public final static String USER_SESSION_NOTE_LABEL = "User Session Note";
+    public final static String MULTIVALUED_LABEL = "Multivalued";
+    public final static String SELECT_ROLE_LABEL = "Select Role";
+    public final static String TOKEN_CLAIM_NAME_LABEL = "Token Claim Name";
+    public final static String CLAIM_JSON_TYPE_LABEL = "Claim JSON Type";
+    public final static String ADD_TO_ID_TOKEN_LABEL = "Add to ID token";
+    public final static String ADD_TO_ACCESS_TOKEN_LABEL = "Add to access token";
+
+    @FindBy(id = "name")
+    private WebElement nameElement;
+
+    @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='consentRequired']]")
+    private OnOffSwitch consentRequiredSwitch;
+
+    @FindBy(id = "consentText")
+    private WebElement consentTextElement;
+
+    @FindBy(id = "mapperTypeCreate")
+    private Select mapperTypeSelect;
+
+    @FindBy
+    private WebElement roleElement;
+
+    @ArquillianResource
+    private Actions actions;
+
+    public void getName() {
+        getInputValue(nameElement);
+    }
+
+    public void setName(String name) {
+        setInputValue(nameElement, name);
+    }
+
+    public boolean isConsentRequired() {
+        return consentRequiredSwitch.isOn();
+    }
+
+    public void setConsentRequired(boolean consentRequired) {
+        consentRequiredSwitch.setOn(consentRequired);
+    }
+
+    public String getConsentText() {
+        return getInputValue(consentTextElement);
+    }
+
+    public void setConsentText(String consentText) {
+        setInputValue(consentTextElement, consentText);
+    }
+
+    public String getMapperType() {
+        return mapperTypeSelect.getFirstSelectedOption().getText();
+    }
+
+    public void setMapperType(String type) {
+        mapperTypeSelect.selectByVisibleText(type);
+    }
+
+    protected String getConfigBaseXPath(String label) {
+        return ".//div[@properties='mapperType.properties']//label[text()='" + label + "']//following-sibling::node()";
+    }
+
+    protected WebElement getTextInputElement(String label) {
+        return driver.findElement(By.xpath(getConfigBaseXPath(label) + "//input[@type='text']"));
+    }
+
+    protected Select getSelectElement(String label) {
+        return new Select(driver.findElement(By.xpath(getConfigBaseXPath(label) + "//select")));
+    }
+
+    public String getTextInput(String label) {
+        return getInputValue(getTextInputElement(label));
+    }
+
+    public void setTextInput(String label, String value) {
+        setInputValue(getTextInputElement(label), value);
+    }
+
+    public String getSelect(String label) {
+        return getSelectElement(label).getFirstSelectedOption().getText();
+    }
+
+    public void setSelect(String label, String value) {
+        getSelectElement(label).selectByVisibleText(value);
+    }
+
+    public OnOffSwitch onOffSwitch(String label) {
+        WebElement root = driver.findElement(By.xpath(getConfigBaseXPath(label) + "//div[@class='onoffswitch']"));
+        return new OnOffSwitch(root, actions);
+    }
+}
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java
index 6319c4c..118e058 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java
@@ -36,6 +36,14 @@ public class OnOffSwitch {
     @ArquillianResource
     private Actions actions;
 
+    public OnOffSwitch() {
+    }
+
+    public OnOffSwitch(WebElement root, Actions actions) {
+        this.root = root;
+        this.actions = actions;
+    }
+
     public boolean isOn() {
         waitAjaxForElement(root);
         return root.findElement(By.tagName("input")).isSelected();