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 fbb73dadca282faa7e218288efb312d963b357d0..86cbf0d0c6ca46a3481ac3042a426e39401cc6fe 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java @@ -119,7 +119,8 @@ class KeycloakUserRemoteService { realmResource.users().get(userId).roles().clientLevel(appClient.getId()).add(Arrays.asList(clientRole)); } - public boolean existSecret(OzgKeycloakUserSpec userSpec, String namespace) { + public boolean existSecret(OzgKeycloakUserSpec userSpec, String createdNamespace) { + var namespace = "keycloak";// TODO durch den namespace ersetzen, wenn die Helm Charts passen var secret = getUserSecret(userSpec, namespace); return Objects.nonNull(secret.get()); @@ -165,12 +166,16 @@ class KeycloakUserRemoteService { return upperCaseCharacter + randomString; } - public String getPasswordFromSecret(OzgKeycloakUserSpec userSpec, String namespace) { + public String getPasswordFromSecret(OzgKeycloakUserSpec userSpec, String createdNamespace) { + var namespace = "keycloak";// TODO durch den namespace ersetzen, wenn die Helm Charts passen + var secret = getUserSecret(userSpec, namespace); return getPasswordFromSecret(secret); } - public Resource<Secret> getUserSecret(OzgKeycloakUserSpec userSpec, String namespace) { + public Resource<Secret> getUserSecret(OzgKeycloakUserSpec userSpec, String createdNamespace) { + var namespace = "keycloak";// TODO durch den namespace ersetzen, wenn die Helm Charts passen + var secretName = buildCredentialSecretName(userSpec.getKeycloakUser()); return getUserSecret(secretName, namespace); } 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 8f44e5328c246c08e5313062865effcbdc40e359..ff0a3c84ccf58f1bcbf4d10fd58f87ab3e8405a7 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java @@ -37,6 +37,7 @@ import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -295,6 +296,17 @@ class KeycloakUserRemoteServiceTest { doReturn(resourceMock).when(userRemoteService).getUserSecret(any(), any()); } + // TODO Enable, wenn die Helm Charts passen + @Disabled + @Test + void shouldGetUserSecret() { + when(resourceMock.get()).thenReturn(new Secret()); + + userRemoteService.existSecret(userSpec, REALM); + + verify(userRemoteService).getUserSecret(userSpec, REALM); + } + @Test void shouldReturnTrueIfExists() { when(resourceMock.get()).thenReturn(new Secret()); @@ -337,6 +349,8 @@ class KeycloakUserRemoteServiceTest { userRemoteService.createSecret(userSpec, REALM); verify(userRemoteService).createUserSecret(eq(userSpec.getKeycloakUser()), any()); + // TODO Enable, wenn die Helm Charts passen +// verify(userRemoteService).createUserSecret(userSpec.getKeycloakUser(), REALM); } @Test @@ -421,6 +435,41 @@ class KeycloakUserRemoteServiceTest { assertThat(password).isNotEmpty(); assertThat(StringUtils.substring(password, 0, 1)).isUpperCase(); + assertThat(StringUtils.substring(password, 1, password.length())).isUpperCase(); + } + } + + @DisplayName("Get password from secret") + @Nested + class TestGetPasswordFromSecret { + + @Mock + private Resource<Secret> resource; + private OzgKeycloakUserSpec userSpec = OzgKeycloakUserSpecTestFactory.create(); + private Secret secret = new SecretBuilder() + .addToStringData(KeycloakUserRemoteService.SECRET_PASSWORD_FIELD, Base64.getEncoder().encodeToString("dummyPassword".getBytes())) + .build(); + + @Test + void shouldGetUserSecret() { + doReturn(resource).when(userRemoteService).getUserSecret(any(), any()); + when(resource.get()).thenReturn(secret); + + userRemoteService.getPasswordFromSecret(userSpec, REALM); + + verify(userRemoteService).getUserSecret(eq(userSpec), any()); + // TODO Enable, wenn die Helm Charts passen +// verify(userRemoteService).getUserSecret(userSpec, REALM); + } + + @Test + void shouldReturnDecodedPassword() { + doReturn(resource).when(userRemoteService).getUserSecret(any(), any()); + when(resource.get()).thenReturn(secret); + + var password = userRemoteService.getPasswordFromSecret(userSpec, REALM); + + assertThat(password).isEqualTo("dummyPassword"); } } @@ -435,36 +484,22 @@ class KeycloakUserRemoteServiceTest { void mock() { when(kubernetesClient.secrets()).thenReturn(secretsMock); when(secretsMock.inNamespace(any())).thenReturn(secretsMock); - } @Test - void shouldGetWithName() { + void shouldGetFromNamespace() { userRemoteService.getUserSecret(OzgKeycloakUserSpecTestFactory.create(), REALM); - verify(secretsMock).withName(KeycloakUserSpecUserTestFactory.USERNAME + "-credentials"); + verify(secretsMock).inNamespace(any()); + // TODO Enable, wenn die Helm Charts passen +// verify(secretsMock).inNamespace(REALM); } - } - - @DisplayName("Get password from secret") - @Nested - class TestGetPasswordFromSecret { - - @Mock - private Resource<Secret> resource; - private OzgKeycloakUserSpec userSpec = OzgKeycloakUserSpecTestFactory.create(); - private Secret secret = new SecretBuilder() - .addToStringData(KeycloakUserRemoteService.SECRET_PASSWORD_FIELD, Base64.getEncoder().encodeToString("dummyPassword".getBytes())) - .build(); @Test - void shouldReturnDecodedPassword() { - doReturn(resource).when(userRemoteService).getUserSecret(any(), any()); - when(resource.get()).thenReturn(secret); - - var password = userRemoteService.getPasswordFromSecret(userSpec, REALM); + void shouldGetWithName() { + userRemoteService.getUserSecret(OzgKeycloakUserSpecTestFactory.create(), REALM); - assertThat(password).isEqualTo("dummyPassword"); + verify(secretsMock).withName(KeycloakUserSpecUserTestFactory.USERNAME + "-credentials"); } } } \ No newline at end of file