From 79ed99b55d0d50db9ebd9ce166a27ca82f88bb07 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 11 Apr 2024 16:22:55 +0200
Subject: [PATCH] OZG-4870 check the empty values of smtpServer config

---
 .../keycloak/realm/KeycloakRealmMapper.java   | 24 ++++++++++++-------
 .../realm/KeycloakRealmMapperTest.java        |  6 ++---
 .../realm/KeycloakRealmReconcilerTest.java    |  6 +++++
 .../KeycloakRealmSmtpServerTestFactory.java   |  9 ++-----
 .../OzgCloudKeycloakRealmSpecTestFactory.java |  4 +++-
 5 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
index f256c59..8021fb1 100644
--- a/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
+++ b/ozgcloud-keycloak-operator/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapper.java
@@ -55,14 +55,22 @@ interface KeycloakRealmMapper {
 	@Named("smtpServer")
 	 default Map<String, String> mapSmtpServer(OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer server) {
 		Map<String, String> smtpServer = new HashMap<>();
-		smtpServer.put("host", server.getHost());
-		smtpServer.put("port", server.getPort());
-		smtpServer.put("user", server.getUser());
-		smtpServer.put("password", server.getPassword());
-		smtpServer.put("starttls", server.getStarttls()); 
-		smtpServer.put("auth", server.getAuth()); 
-		smtpServer.put("from", server.getFrom()); 
-		smtpServer.put("fromDisplayName", server.getFromDisplayName()); 
+		if( server.getHost() != null )
+			smtpServer.put("host", server.getHost());
+		if( server.getPort() != null )
+			smtpServer.put("port", server.getPort());
+		if( server.getUser() != null )
+			smtpServer.put("user", server.getUser());
+		if( server.getPassword() != null )
+			smtpServer.put("password", server.getPassword());
+		if( server.getStarttls() != null )
+			smtpServer.put("starttls", server.getStarttls()); 
+		if( server.getAuth() != null )
+			smtpServer.put("auth", server.getAuth()); 
+		if( server.getFrom() != null )
+			smtpServer.put("from", server.getFrom()); 
+		if( server.getFromDisplayName() != null ) 
+			smtpServer.put("fromDisplayName", server.getFromDisplayName()); 
 		return smtpServer;
 	}
 
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
index bc63886..7cee004 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmMapperTest.java
@@ -100,14 +100,14 @@ class KeycloakRealmMapperTest {
 
 	@Test
 	void shouldContainSmtpServerKeysValues() {
-		var mapped = mapper.map(KeycloakRealmSmtpServerTestFactory.create());
+		var mapped = mapper.map(OzgCloudKeycloakRealmSpecTestFactory.create());
 		var mappedSmtpServer = mapped.getSmtpServer();
 		assertThat(mappedSmtpServer.get("host")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_HOST);
 		assertThat(mappedSmtpServer.get("port")).isEqualTo("432");
 		assertThat(mappedSmtpServer.get("password")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_PASSWORD);
 		assertThat(mappedSmtpServer.get("user")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_USER);
-		assertThat(mappedSmtpServer.get("starttls")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_STARTTLS.toString());
-		assertThat(mappedSmtpServer.get("auth")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_AUTH.toString());
+		assertThat(mappedSmtpServer.get("starttls")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_STARTTLS);
+		assertThat(mappedSmtpServer.get("auth")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_AUTH);
 		assertThat(mappedSmtpServer.get("from")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_FROM);
 		assertThat(mappedSmtpServer.get("fromDisplayName")).isEqualTo(KeycloakRealmSmtpServerTestFactory.SMTP_SERVER_FROM_DISPLAY_NAME);
 		
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
index bdcffd8..146211a 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconcilerTest.java
@@ -71,6 +71,12 @@ class KeycloakRealmReconcilerTest {
 
 			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
 		}
+
+		@Test
+		void shouldCreateRealmWithSpecWithoutSMTPConfig() {
+			var response = reconciler.reconcile(OzgCloudKeycloakRealmTestFactory.create(), null);
+			assertThat(response.getResource().getStatus().getStatus()).isEqualTo(OzgCloudCustomResourceStatus.OK);
+		}
 	}
 
 	@DisplayName("Cleanup")
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java
index 737c2a8..eecf3c8 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmSmtpServerTestFactory.java
@@ -16,13 +16,8 @@ public class KeycloakRealmSmtpServerTestFactory {
     public final static KeycloakRealmSMTPServer SMTP_SERVER = KeycloakRealmSMTPServer.builder().host(SMTP_SERVER_HOST).user(SMTP_SERVER_USER).
 	password(SMTP_SERVER_PASSWORD).port(SMTP_SERVER_PORT).starttls(SMTP_SERVER_STARTTLS).auth(SMTP_SERVER_AUTH).from(SMTP_SERVER_FROM).fromDisplayName(SMTP_SERVER_FROM_DISPLAY_NAME).build();
     
-    public static OzgCloudKeycloakRealmSpec create() {
-		return createBuilder().build();
-	}
-
-	public static OzgCloudKeycloakRealmSpec.OzgCloudKeycloakRealmSpecBuilder createBuilder() {
-		return OzgCloudKeycloakRealmSpec.builder()
-				.smtpServer(SMTP_SERVER);
+    public static OzgCloudKeycloakRealmSpec.KeycloakRealmSMTPServer create() {
+		return SMTP_SERVER;
 	}
     
 }
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
index 78cd362..86fbe54 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/OzgCloudKeycloakRealmSpecTestFactory.java
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.operator.keycloak.realm;
 
+
 public class OzgCloudKeycloakRealmSpecTestFactory {
 
 	public final static String DISPLAY_NAME = "TestDisplayName";
@@ -35,6 +36,7 @@ public class OzgCloudKeycloakRealmSpecTestFactory {
 	public static OzgCloudKeycloakRealmSpec.OzgCloudKeycloakRealmSpecBuilder createBuilder() {
 		return OzgCloudKeycloakRealmSpec.builder()
 				.keepAfterDelete(KEEP_AFTER_DELETE)
-				.displayName(DISPLAY_NAME);
+				.displayName(DISPLAY_NAME)
+				.smtpServer(KeycloakRealmSmtpServerTestFactory.create());
 	}
 }
-- 
GitLab