keycloak-aplcache

Test password policies using REST

10/15/2015 7:44:27 AM

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
index 3df1e67..5eb8f1b 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
@@ -34,6 +34,8 @@ public class PasswordPolicy extends Authentication {
     public void addPolicy(PasswordPolicy.Type policy, String value) {
         waitGuiForElement(addPolicySelectElement);
         addPolicySelect.selectByVisibleText(policy.getName());
+
+        //addPolicySelect.selectByValue(policy.getName());
         setPolicyValue(policy, value);
         primaryButton.click();
     }
@@ -82,10 +84,10 @@ public class PasswordPolicy extends Authentication {
 
     public enum Type {
 
-        HASH_ITERATIONS("Hash Iterations"), LENGTH("Length"), DIGITS("Digits"), LOWER_CASE("Lower Case"),
-        UPPER_CASE("Upper Case"), SPECIAL_CHARS("Special Chars"), NOT_USERNAME("Not Username"),
-        REGEX_PATTERN("Regex Pattern"), PASSWORD_HISTORY("Password History"),
-        FORCE_EXPIRED_PASSWORD_CHANGE("Force Expired Password Change");
+        HASH_ITERATIONS("HashIterations"), LENGTH("Length"), DIGITS("Digits"), LOWER_CASE("LowerCase"),
+        UPPER_CASE("UpperCase"), SPECIAL_CHARS("SpecialChars"), NOT_USERNAME("NotUsername"),
+        REGEX_PATTERN("RegexPattern"), PASSWORD_HISTORY("PasswordHistory"),
+        FORCE_EXPIRED_PASSWORD_CHANGE("ForceExpiredPasswordChange");
 
         private String name;
 
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/authentication/PasswordPolicyTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/authentication/PasswordPolicyTest.java
index bb578ff..aecb315 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/authentication/PasswordPolicyTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/authentication/PasswordPolicyTest.java
@@ -21,11 +21,13 @@ import org.jboss.arquillian.graphene.page.Page;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
+import org.keycloak.representations.idm.RealmRepresentation;
 import org.keycloak.testsuite.console.AbstractConsoleTest;
 import org.keycloak.testsuite.console.page.authentication.PasswordPolicy;
 import org.keycloak.testsuite.console.page.users.UserCredentials;
 
-import static org.keycloak.testsuite.console.page.authentication.PasswordPolicy.Type.*;
+import static org.keycloak.testsuite.console.page.authentication.PasswordPolicy.Type.HASH_ITERATIONS;
+import static org.keycloak.testsuite.console.page.authentication.PasswordPolicy.Type.REGEX_PATTERN;
 
 /**
  * @author Petr Mensik
@@ -43,11 +45,11 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
     @Before
     public void beforePasswordPolicyTest() {
         testUserCredentialsPage.setId(testUser.getId());
-        passwordPolicyPage.navigateTo();
     }
 
     @Test
     public void testAddAndRemovePolicy() {
+        passwordPolicyPage.navigateTo();
         passwordPolicyPage.addPolicy(HASH_ITERATIONS, 5);
         passwordPolicyPage.removePolicy(HASH_ITERATIONS);
         assertFlashMessageSuccess();
@@ -55,6 +57,7 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testInvalidPolicyValues() {
+        passwordPolicyPage.navigateTo();
         passwordPolicyPage.addPolicy(HASH_ITERATIONS, "asd");
         assertFlashMessageDanger();
         passwordPolicyPage.removePolicy(HASH_ITERATIONS);
@@ -65,7 +68,10 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testLengthPolicy() {
-        passwordPolicyPage.addPolicy(LENGTH, 8);
+
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("length(8) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("1234567");
@@ -77,7 +83,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testDigitsPolicy() {
-        passwordPolicyPage.addPolicy(DIGITS, 2);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("digits(2) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("invalidPassword1");
@@ -89,7 +97,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testLowerCasePolicy() {
-        passwordPolicyPage.addPolicy(LOWER_CASE, 2);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("lowerCase(2) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("iNVALIDPASSWORD");
@@ -101,7 +111,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testUpperCasePolicy() {
-        passwordPolicyPage.addPolicy(UPPER_CASE, 2);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("upperCase(2) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("Invalidpassword");
@@ -113,7 +125,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testSpecialCharsPolicy() {
-        passwordPolicyPage.addPolicy(SPECIAL_CHARS, 2);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("specialChars(2) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("invalidPassword*");
@@ -125,7 +139,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testNotUsernamePolicy() {
-        passwordPolicyPage.addPolicy(NOT_USERNAME);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("notUsername(1) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword(testUser.getUsername());
@@ -137,7 +153,16 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testRegexPatternsPolicy() {
-        passwordPolicyPage.addPolicy(REGEX_PATTERN, "^[A-Z]+#[a-z]{8}$");
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("regexPattern(^[A-Z]+#[a-z]{8}$) and ");
+        System.out.println(realm.getPasswordPolicy());
+        testRealmResource().update(realm);
+
+       /* try {
+            Thread.sleep(45000000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }*/
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("invalidPassword");
@@ -149,7 +174,9 @@ public class PasswordPolicyTest extends AbstractConsoleTest {
 
     @Test
     public void testPasswordHistoryPolicy() {
-        passwordPolicyPage.addPolicy(PASSWORD_HISTORY, 2);
+        RealmRepresentation realm = testRealmResource().toRepresentation();
+        realm.setPasswordPolicy("passwordHistory(2) and ");
+        testRealmResource().update(realm);
 
         testUserCredentialsPage.navigateTo();
         testUserCredentialsPage.resetPassword("firstPassword");