From 7237bd49ccd1eef8dbfd4b72265a470458bcdf6b Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 25 Aug 2023 13:59:13 +0200
Subject: [PATCH] OZG-3961 add test for secret creation

---
 .../user/KeycloakUserRemoteService.java       |  8 +-
 .../user/KeycloakUserRemoteServiceTest.java   | 79 ++++++++++++-------
 2 files changed, 54 insertions(+), 33 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 2034374..fd1d383 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteService.java
@@ -128,10 +128,14 @@ class KeycloakUserRemoteService {
 		log.log(Level.INFO, "Create secret for user: " + userSpec.getKeycloakUser().getUsername());
 		var credentialsSecret = createUserSecret(userSpec.getKeycloakUser(), namespace);
 
-		var adapter = new ResourceAdapter<>(getUserSecret(userSpec, namespace));
+		var adapter = createResourceAdpater(getUserSecret(userSpec, namespace));
 		adapter.create(credentialsSecret);
 	}
 
+	ResourceAdapter<Secret> createResourceAdpater(Resource<Secret> secretResource) {
+		return new ResourceAdapter<>(secretResource);
+	}
+
 	Secret createUserSecret(KeycloakUserSpecUser userSpec, String namespace) {
 		return new SecretBuilder()
 				.withType(SECRET_TYPE)
@@ -157,7 +161,6 @@ class KeycloakUserRemoteService {
 		log.log(Level.INFO, "Generate password...");
 		var upperCaseCharacter = RandomStringUtils.randomAlphabetic(1).toUpperCase();
 		var randomString = RandomStringUtils.randomAlphanumeric(7);
-		log.log(Level.INFO, "Password generated: " + (upperCaseCharacter + randomString));
 		return upperCaseCharacter + randomString;
 	}
 
@@ -167,7 +170,6 @@ class KeycloakUserRemoteService {
 
 	public Resource<Secret> getUserSecret(OzgKeycloakUserSpec userSpec, String namespace) {
 		var secretName = buildCredentialSecretName(userSpec.getKeycloakUser());
-		log.log(Level.INFO, "Get User secret: " + secretName);
 		return kubernetesRemoteService.getSecret(namespace, secretName);
 	}
 
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 a799050..c3011f8 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserRemoteServiceTest.java
@@ -62,6 +62,7 @@ import de.ozgcloud.operator.keycloak.user.OzgKeycloakUserSpec.KeycloakUserSpecUs
 import io.fabric8.kubernetes.api.model.Secret;
 import io.fabric8.kubernetes.api.model.SecretBuilder;
 import io.fabric8.kubernetes.client.dsl.Resource;
+import io.fabric8.kubernetes.client.extension.ResourceAdapter;
 
 class KeycloakUserRemoteServiceTest {
 
@@ -325,36 +326,54 @@ class KeycloakUserRemoteServiceTest {
 		}
 	}
 
-//	@DisplayName("Create Secret")
-//	@Nested
-//	class TestCreateSecret {
-//
-//		private final OzgKeycloakUserSpec userSpec = OzgKeycloakUserSpecTestFactory.create();
-//
-//		@Mock
-//		private Resource<Secret> secretResource;
-//		@Mock
-//		private Secret secret;
-//
-//		@BeforeEach
-//		void mock() {
-//			doReturn(secret).when(userRemoteService).createUserSecret(any(), any());
-//		}
-//
-//		@Test
-//		void shouldBuildUserSecret() {
-//			userRemoteService.createSecret(userSpec, NAMESPACE);
-//
-//			verify(userRemoteService).createUserSecret(userSpec.getKeycloakUser(), NAMESPACE);
-//		}
-//
-//		@Test
-//		void shouldCreateSecretIfNotExists() {
-//			userRemoteService.createSecret(userSpec, NAMESPACE);
-//
-//			verify(server).create(secret);
-//		}
-//	}
+	@DisplayName("Create Secret")
+	@Nested
+	class TestCreateSecret {
+
+		private final OzgKeycloakUserSpec userSpec = OzgKeycloakUserSpecTestFactory.create();
+
+		@Mock
+		private Resource<Secret> secretResource;
+		@Mock
+		private Secret secret;
+		@Mock
+		private ResourceAdapter<Secret> resourceAdapter;
+
+		@BeforeEach
+		void mock() {
+			doReturn(secret).when(userRemoteService).createUserSecret(any(), any());
+			doReturn(secretResource).when(userRemoteService).getUserSecret(any(), any());
+			doReturn(resourceAdapter).when(userRemoteService).createResourceAdpater(any());
+		}
+
+		@Test
+		void shouldBuildUserSecret() {
+			userRemoteService.createSecret(userSpec, NAMESPACE);
+
+			verify(userRemoteService).createUserSecret(userSpec.getKeycloakUser(), NAMESPACE);
+		}
+
+		@Test
+		void shouldGetUserSecret() {
+			userRemoteService.createSecret(userSpec, NAMESPACE);
+
+			verify(userRemoteService).getUserSecret(userSpec, NAMESPACE);
+		}
+
+		@Test
+		void shouldCreateResourcAdpater() {
+			userRemoteService.createSecret(userSpec, NAMESPACE);
+
+			verify(userRemoteService).createResourceAdpater(secretResource);
+		}
+
+		@Test
+		void shouldCreateSecret() {
+			userRemoteService.createSecret(userSpec, NAMESPACE);
+
+			verify(resourceAdapter).create(secret);
+		}
+	}
 
 	@DisplayName("Create user secret")
 	@Nested
-- 
GitLab