From 81aae889e17115f7c607872e695523e60dd63f8a Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 7 Mar 2024 16:53:22 +0100 Subject: [PATCH] fix keycloak user password generator --- .../keycloak/user/UserSecretBuilder.java | 7 ++--- .../keycloak/user/UserSecretBuilderTest.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilder.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilder.java index 070fdbf..2b5c1f2 100644 --- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilder.java +++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilder.java @@ -27,9 +27,10 @@ class UserSecretBuilder { } String generatePassword() { - var upperCaseCharacter = RandomStringUtils.randomAlphabetic(1).toUpperCase(); - var randomString = RandomStringUtils.randomAlphanumeric(7); - return encode(upperCaseCharacter + randomString); + var upperCaseCharacter = RandomStringUtils.randomAlphabetic(8).toUpperCase(); + var lowerCaseCharacter = RandomStringUtils.randomAlphabetic(8).toLowerCase(); + var numbers = RandomStringUtils.randomNumeric(8); + return encode(upperCaseCharacter + lowerCaseCharacter + numbers); } String encode(String strValue) { diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilderTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilderTest.java index 3473c34..5a341fc 100644 --- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilderTest.java +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretBuilderTest.java @@ -6,9 +6,9 @@ import static org.mockito.Mockito.*; import java.util.Base64; -import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; import org.mockito.Spy; @@ -81,35 +81,35 @@ class UserSecretBuilderTest { @Nested class TestGeneratePassword { - @Test + @RepeatedTest(100) void shouldHaveSize() { var password = decode(builder.generatePassword()); - assertThat(password).hasSize(8); + assertThat(password).hasSize(24); } - @Test - void shouldHaveUpperCaseLetterAtFirst() { + @RepeatedTest(100) + void shouldHaveUpperCaseLetters() { var password = decode(builder.generatePassword()); - assertThat(StringUtils.substring(password, 0, 1)).isUpperCase(); + assertThat(password).matches(".*[A-Z].*"); } - @Test - void shouldContainsAlphanumericOnly() { + @RepeatedTest(100) + void shouldHaveLowercaseLetters() { var password = decode(builder.generatePassword()); - assertThat(password).isAlphanumeric(); + assertThat(password).matches(".*[a-z].*"); } - @Test - void shouldHaveMiminumLength() { + @RepeatedTest(100) + void shouldContainNumerics() { var password = decode(builder.generatePassword()); - assertThat(password).hasSize(8); + assertThat(password).matches(".*[0-9].*"); } - @Test + @RepeatedTest(100) void shouldEncode() { builder.generatePassword(); -- GitLab