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 070fdbf3b593c966ddf462c0a7c45e48bf10f7ca..2b5c1f23ebf12e4188ce6a4972dfb8aef21b989a 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 3473c34450878c93d26e324c902cdc80d1be12c3..5a341fc94a0169b68c8bc158dbaf548e956013a4 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();