From d95a28849258addb5569e3256498c60547e632b0 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 23 Aug 2023 16:27:25 +0200 Subject: [PATCH] OZG-3961 fix random password generation --- .../user/KeycloakUserRemoteService.java | 6 ++-- .../user/KeycloakUserRemoteServiceTest.java | 32 ++++++++++++++++--- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java index a6c56c1..aa80a74 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java @@ -154,10 +154,10 @@ class KeycloakUserRemoteService { return StringUtils.isEmpty(userPassword) ? generateRandomPasswordForKeycloak() : userPassword; } - private String generateRandomPasswordForKeycloak() { + String generateRandomPasswordForKeycloak() { log.log(Level.INFO, "Generate password..."); - var upperCaseCharacter = RandomStringUtils.random(1).toUpperCase(); - var randomString = RandomStringUtils.random(7); + var upperCaseCharacter = RandomStringUtils.randomAlphabetic(1).toUpperCase(); + var randomString = RandomStringUtils.randomAlphanumeric(7); log.log(Level.INFO, "Password generated: " + (upperCaseCharacter + randomString)); return upperCaseCharacter + randomString; } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java index 12b7fce..2bc3183 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java @@ -420,11 +420,35 @@ class KeycloakUserRemoteServiceTest { @Test void shouldGeneratePasswordIfNotExists() { - var password = userRemoteService.getPassword(StringUtils.EMPTY); + userRemoteService.getPassword(StringUtils.EMPTY); - assertThat(password).isNotEmpty(); - assertThat(StringUtils.substring(password, 0, 1)).isUpperCase(); - assertThat(StringUtils.substring(password, 1, password.length())).isUpperCase(); + verify(userRemoteService).generateRandomPasswordForKeycloak(); + } + + @DisplayName("generate random password for keycloak") + @Nested + class TestGenerateRandomPasswordForKeycloak { + + @Test + void shouldHaveSize() { + var password = userRemoteService.getPassword(StringUtils.EMPTY); + + assertThat(password).hasSize(8); + } + + @Test + void shouldHaveUpperCaseLetterAtFirst() { + var password = userRemoteService.getPassword(StringUtils.EMPTY); + + assertThat(StringUtils.substring(password, 0, 1)).isUpperCase(); + } + + @Test + void shouldContainsAlphanumericOnly() { + var password = userRemoteService.getPassword(StringUtils.EMPTY); + + assertThat(password).isAlphanumeric(); + } } } -- GitLab