From 43db75e2b5d02619ba57642f5d422ab292f23d29 Mon Sep 17 00:00:00 2001 From: Pedro Henrique Silva Date: Fri, 8 May 2026 11:28:18 -0300 Subject: [PATCH] 'Not username' and 'Not email' options when creating/changing a password, should ignore letter case when comparing password to email or to username Signed-off-by: Pedro Henrique Silva --- .../tests/admin/user/UserCreateTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/base/src/test/java/org/keycloak/tests/admin/user/UserCreateTest.java b/tests/base/src/test/java/org/keycloak/tests/admin/user/UserCreateTest.java index 9ef4f34f94df..21d222d7a62d 100644 --- a/tests/base/src/test/java/org/keycloak/tests/admin/user/UserCreateTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/admin/user/UserCreateTest.java @@ -483,6 +483,52 @@ public void createUserWithEmptyUsername() { } } + @Test + public void createUserWithNotUsernameInvalidPassword() { + RealmRepresentation rep = managedRealm.admin().toRepresentation(); + String passwordPolicy = rep.getPasswordPolicy(); + rep.setPasswordPolicy("notUsername()"); + managedRealm.admin().update(rep); + UserRepresentation user = new UserRepresentation(); + user.setUsername("User8"); + user.setEmail("User8@localhost"); + CredentialRepresentation rawPassword = new CredentialRepresentation(); + rawPassword.setValue("user8"); + rawPassword.setType(CredentialRepresentation.PASSWORD); + user.setCredentials(Collections.singletonList(rawPassword)); + managedRealm.admin().clearAdminEvents(); + + try (Response response = managedRealm.admin().users().create(user)) { + assertEquals(400, response.getStatus()); + Assert.assertTrue(response.readEntity(String.class).contains("Invalid password: must not be equal to the username.")); + rep.setPasswordPolicy(passwordPolicy); + managedRealm.admin().update(rep); + } + } + + @Test + public void createUserWithNotEmailInvalidPassword() { + RealmRepresentation rep = managedRealm.admin().toRepresentation(); + String passwordPolicy = rep.getPasswordPolicy(); + rep.setPasswordPolicy("notEmail()"); + managedRealm.admin().update(rep); + UserRepresentation user = new UserRepresentation(); + user.setUsername("User9"); + user.setEmail("User9@localhost"); + CredentialRepresentation rawPassword = new CredentialRepresentation(); + rawPassword.setValue("user9@localhost"); + rawPassword.setType(CredentialRepresentation.PASSWORD); + user.setCredentials(Collections.singletonList(rawPassword)); + managedRealm.admin().clearAdminEvents(); + + try (Response response = managedRealm.admin().users().create(user)) { + assertEquals(400, response.getStatus()); + Assert.assertTrue(response.readEntity(String.class).contains("Invalid password: must not be equal to the email.")); + rep.setPasswordPolicy(passwordPolicy); + managedRealm.admin().update(rep); + } + } + @Test public void createUserWithInvalidPolicyPassword() { RealmRepresentation rep = managedRealm.admin().toRepresentation();