keycloak-uncached

KEYCLOAK-1741 - Login form keeps "Username or email" field

8/26/2015 10:39:41 AM

Details

diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticationProcessor.java b/services/src/main/java/org/keycloak/authentication/AuthenticationProcessor.java
index b51a39f..409b0e7 100755
--- a/services/src/main/java/org/keycloak/authentication/AuthenticationProcessor.java
+++ b/services/src/main/java/org/keycloak/authentication/AuthenticationProcessor.java
@@ -419,6 +419,7 @@ public class AuthenticationProcessor {
             LoginFormsProvider provider = getSession().getProvider(LoginFormsProvider.class)
                     .setUser(getUser())
                     .setActionUri(action)
+                    .setFormData(request.getDecodedFormParameters())
                     .setClientSessionCode(accessCode);
             if (getForwardedErrorMessage() != null) {
                 provider.addError(getForwardedErrorMessage());
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java
index c4f6a84..1ce2a91 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java
@@ -129,6 +129,10 @@ public class LoginTest {
 
         loginPage.assertCurrent();
 
+        // KEYCLOAK-1741 - assert form field values kept
+        Assert.assertEquals("login-test", loginPage.getUsername());
+        Assert.assertEquals("", loginPage.getPassword());
+
         Assert.assertEquals("Invalid username or password.", loginPage.getError());
 
         events.expectLogin().user(userId).session((String) null).error("invalid_user_credentials")
@@ -144,6 +148,10 @@ public class LoginTest {
 
         loginPage.assertCurrent();
 
+        // KEYCLOAK-1741 - assert form field values kept
+        Assert.assertEquals("login-test", loginPage.getUsername());
+        Assert.assertEquals("", loginPage.getPassword());
+
         Assert.assertEquals("Invalid username or password.", loginPage.getError());
 
         events.expectLogin().user(userId).session((String) null).error("invalid_user_credentials")
@@ -167,6 +175,10 @@ public class LoginTest {
 
             loginPage.assertCurrent();
 
+            // KEYCLOAK-1741 - assert form field values kept
+            Assert.assertEquals("login-test", loginPage.getUsername());
+            Assert.assertEquals("", loginPage.getPassword());
+
             Assert.assertEquals("Account is disabled, contact admin.", loginPage.getError());
 
             events.expectLogin().user(userId).session((String) null).error("user_disabled")
@@ -198,6 +210,10 @@ public class LoginTest {
 
             loginPage.assertCurrent();
 
+            // KEYCLOAK-1741 - assert form field values kept
+            Assert.assertEquals("login-test", loginPage.getUsername());
+            Assert.assertEquals("", loginPage.getPassword());
+
             Assert.assertEquals("Account is disabled, contact admin.", loginPage.getError());
 
             events.expectLogin().user(userId).session((String) null).error("user_disabled")
@@ -221,6 +237,10 @@ public class LoginTest {
 
         loginPage.assertCurrent();
 
+        // KEYCLOAK-1741 - assert form field values kept
+        Assert.assertEquals("invalid", loginPage.getUsername());
+        Assert.assertEquals("", loginPage.getPassword());
+
         Assert.assertEquals("Invalid username or password.", loginPage.getError());
 
         events.expectLogin().user((String) null).session((String) null).error("user_not_found")
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
index a0bd5a4..f329533 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/pages/LoginPage.java
@@ -112,6 +112,10 @@ public class LoginPage extends AbstractPage {
         return usernameInput.getAttribute("value");
     }
 
+    public String getPassword() {
+        return passwordInput.getAttribute("value");
+    }
+
     public void cancel() {
         cancelButton.click();
     }