keycloak-memoizeit

Merge pull request #3037 from stianst/KEYCLOAK-3266 KEYCLOAK-3266

7/15/2016 4:03:02 AM

Details

diff --git a/server-spi/src/main/java/org/keycloak/policy/NotUsernamePasswordPolicyProvider.java b/server-spi/src/main/java/org/keycloak/policy/NotUsernamePasswordPolicyProvider.java
index 82fa7b6..54634e6 100644
--- a/server-spi/src/main/java/org/keycloak/policy/NotUsernamePasswordPolicyProvider.java
+++ b/server-spi/src/main/java/org/keycloak/policy/NotUsernamePasswordPolicyProvider.java
@@ -35,6 +35,9 @@ public class NotUsernamePasswordPolicyProvider implements PasswordPolicyProvider
 
     @Override
     public PolicyError validate(String username, String password) {
+        if (username == null) {
+            return null;
+        }
         return username.equals(password) ? new PolicyError(ERROR_MESSAGE) : null;
     }
 
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
index dda7540..119e434 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/RegisterTest.java
@@ -27,7 +27,10 @@ import org.keycloak.testsuite.pages.AppPage;
 import org.keycloak.testsuite.pages.AppPage.RequestType;
 import org.keycloak.testsuite.pages.LoginPage;
 import org.keycloak.testsuite.pages.RegisterPage;
+import org.keycloak.testsuite.util.RealmBuilder;
+import org.keycloak.testsuite.util.UserBuilder;
 
+import static org.jgroups.util.Util.assertTrue;
 import static org.junit.Assert.assertEquals;
 
 /**
@@ -253,15 +256,35 @@ public class RegisterTest extends TestRealmKeycloakTest {
         assertEquals("lastName", user.getLastName());
     }
 
-    /*protected UserModel getUser(String userId) {
-        KeycloakSession samlServerSession = keycloakRule.startSession();
-        try {
-            RealmModel brokerRealm = samlServerSession.realms().getRealm("test");
-            return samlServerSession.users().getUserById(userId, brokerRealm);
-        } finally {
-            keycloakRule.stopSession(samlServerSession, false);
-        }
-    }*/
+    // KEYCLOAK-3266
+    @Test
+    public void registerUserNotUsernamePasswordPolicy() {
+        adminClient.realm("test").update(RealmBuilder.create().passwordPolicy("notUsername").build());
+
+        loginPage.open();
+
+        assertTrue(loginPage.isCurrent());
+
+        loginPage.clickRegister();
+        registerPage.assertCurrent();
+
+        registerPage.register("firstName", "lastName", "registerUserNotUsername@email", "registerUserNotUsername", "registerUserNotUsername", "registerUserNotUsername");
+
+        assertTrue(registerPage.isCurrent());
+        assertEquals("Invalid password: must not be equal to the username.", registerPage.getError());
+
+        adminClient.realm("test").users().create(UserBuilder.create().username("registerUserNotUsername").build());
+
+        registerPage.register("firstName", "lastName", "registerUserNotUsername@email", "registerUserNotUsername", "registerUserNotUsername", "registerUserNotUsername");
+
+        assertTrue(registerPage.isCurrent());
+        assertEquals("Username already exists.", registerPage.getError());
+
+        registerPage.register("firstName", "lastName", "registerUserNotUsername@email", null, "password", "password");
+
+        assertTrue(registerPage.isCurrent());
+        assertEquals("Please specify username.", registerPage.getError());
+    }
 
     protected UserRepresentation getUser(String userId) {
         return testRealm().users().get(userId).toRepresentation();
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmBuilder.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmBuilder.java
index 23b100e..c9746d2 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmBuilder.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/RealmBuilder.java
@@ -172,6 +172,11 @@ public class RealmBuilder {
         return this;
     }
 
+    public RealmBuilder passwordPolicy(String passwordPolicy) {
+        rep.setPasswordPolicy(passwordPolicy);
+        return this;
+    }
+
     public RealmRepresentation build() {
         return rep;
     }