From 89dbbb92d65bb208e3089efcad9b74f525cda60e Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Fri, 30 Aug 2024 15:30:13 +0200 Subject: [PATCH] OZG-6500 kc user precondition check user email --- .../user/KeycloakUserPreconditionService.java | 9 +++ .../KeycloakUserPreconditionServiceTest.java | 59 ++++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java index 4e92bd3..d329c49 100644 --- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java +++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionService.java @@ -55,6 +55,11 @@ class KeycloakUserPreconditionService { return groupError; } + if(!userEmailExists(user)) { + return Optional.of(String.format("User Email does not yet exist")); + } + + return Optional.empty(); } @@ -78,4 +83,8 @@ class KeycloakUserPreconditionService { .map(groupName -> String.format("Group %s for realm %s does not exist yet", groupName, realm)) .findAny(); } + + boolean userEmailExists(OzgCloudKeycloakUser user) { + return !user.getSpec().getKeycloakUser().getEmail().isEmpty(); + } } diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionServiceTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionServiceTest.java index 1800a5a..f12ddca 100644 --- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionServiceTest.java +++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserPreconditionServiceTest.java @@ -41,6 +41,7 @@ import org.mockito.Spy; import de.ozgcloud.operator.keycloak.KeycloakClient; import de.ozgcloud.operator.keycloak.KeycloakGenericRemoteService; +import io.fabric8.kubernetes.api.model.Secret; class KeycloakUserPreconditionServiceTest { @@ -89,18 +90,54 @@ class KeycloakUserPreconditionServiceTest { assertThat(response).isPresent(); } + @Test + void shouldReturnErrorIfUserEmailNotExists() { + var user = OzgCloudKeycloakUserTestFactory.create(); + doReturn(true).when(service).realmExists(REALM); + //doReturn(false).when(service).userEmailExists(user); + + + var response = service.getPreconditionErrors(user); + + assertThat(response).isPresent(); + } @Test void shouldReturnEmptyIfRealmExists() { + var user = OzgCloudKeycloakUserTestFactory.create(); + doReturn(true).when(service).userEmailExists(user); doReturn(true).when(keycloakGenericRemoteService).realmExists(anyString()); doReturn(Optional.empty()).when(service).clientsExists(any(), any()); doReturn(Optional.empty()).when(service).groupsExists(any(), any()); - var response = service.getPreconditionErrors(OzgCloudKeycloakUserTestFactory.create()); + var response = service.getPreconditionErrors(user); assertThat(response).isEmpty(); } + @Test + void shouldReturnEmptyIfUserEmailExists() { + var user = OzgCloudKeycloakUserTestFactory.create(); + doReturn(true).when(service).userEmailExists(user); + doReturn(true).when(keycloakGenericRemoteService).realmExists(anyString()); + doReturn(Optional.empty()).when(service).clientsExists(any(), any()); + doReturn(Optional.empty()).when(service).groupsExists(any(), any()); + + var response = service.getPreconditionErrors(user); + + assertThat(response).isEmpty(); + } + @Test + void shouldCheckUserEmailExists() { + var user = OzgCloudKeycloakUserTestFactory.create(); + doReturn(true).when(keycloakGenericRemoteService).realmExists(anyString()); + doReturn(Optional.empty()).when(service).clientsExists(any(), any()); + doReturn(Optional.empty()).when(service).groupsExists(any(), any()); + + service.getPreconditionErrors(user); + + verify(service).userEmailExists(user); + } @Test void shouldCheckIfKeycloakClientExists() { doReturn(true).when(keycloakGenericRemoteService).realmExists(anyString()); @@ -144,6 +181,26 @@ class KeycloakUserPreconditionServiceTest { } } + @Nested + class TestUserEmailExists { + + @Test + void shouldRespondUserEmailExists() { + + var response = service.userEmailExists(OzgCloudKeycloakUserTestFactory.create()); + + assertThat(response).isTrue(); + } + @Test + void shouldRespondUserEmailNotExists() { + var user = OzgCloudKeycloakUserTestFactory.create(); + user.getSpec().getKeycloakUser().setEmail(""); + var response = service.userEmailExists(user); + + assertThat(response).isFalse(); + } + } + @Nested class TestClientExists { -- GitLab