From be665a3dec62947e437e8c129eb69cc586f8aea0 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 11 Jun 2024 18:34:32 +0200
Subject: [PATCH] OZG-5400 add unittests for realm update

---
 .../realm/KeycloakRealmReconcilerTest.java    |  2 +-
 .../realm/KeycloakRealmServiceTest.java       | 63 +++++++++++++++++++
 2 files changed, 64 insertions(+), 1 deletion(-)

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 0ede579..f267eb4 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
@@ -51,7 +51,7 @@ class KeycloakRealmReconcilerTest {
 	class TestReconcile {
 
 		@Test
-		void shouldCallServiceAddRealm() {
+		void shouldCallServiceCreateOrUpdateRealm() {
 			OzgCloudKeycloakRealm realm = OzgCloudKeycloakRealmTestFactory.create();
 
 			reconciler.reconcile(realm, null);
diff --git a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceTest.java b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceTest.java
index 529dd38..c0f0f3c 100644
--- a/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceTest.java
+++ b/ozgcloud-keycloak-operator/src/test/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmServiceTest.java
@@ -26,20 +26,28 @@ package de.ozgcloud.operator.keycloak.realm;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
+import java.util.Optional;
+
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.operator.keycloak.KeycloakGenericRemoteService;
+import de.ozgcloud.operator.keycloak.client.ClientRepresentationTestFactory;
+import de.ozgcloud.operator.keycloak.client.OzgCloudKeycloakClientSpecTestFactory;
+
 
 class KeycloakRealmServiceTest {
 
 	private static final OzgCloudKeycloakRealmSpec REALM = OzgCloudKeycloakRealmSpecTestFactory.create();
 	private static final String REALM_NAME = "TestRealmName";
+	private static final String TEST_NAMESPACE = "TestNamespace";
 
 	@Spy
 	@InjectMocks
@@ -57,6 +65,61 @@ class KeycloakRealmServiceTest {
 	@Mock
 	private KeycloakGenericRemoteService keycloakGenericRemoteService;
 
+	
+	
+	
+	@Nested
+	class TestCreanOrUpdateRealm {
+
+		@Test
+		void shouldCallCreateRealmMethodIfNotExists() {
+	
+			when(keycloakGenericRemoteService.getRealmRepresentation(REALM_NAME)).thenReturn(Optional.empty());
+
+			service.createOrUpdateRealm(REALM, REALM_NAME);
+
+			verify(service).createRealm(REALM, REALM_NAME);
+		}
+
+		@Test
+		void shouldCallUpdateRealmIfAlreadyExists() {
+			var existingRealm = RealmRepresentationTestFactory.create();
+			when(keycloakGenericRemoteService.getRealmRepresentation(REALM_NAME)).thenReturn(Optional.of(existingRealm));
+
+			service.createOrUpdateRealm(REALM, REALM_NAME);
+
+			verify(service).updateRealm(existingRealm, REALM);
+		}
+	}
+
+
+	@DisplayName("Update Realm")
+	@Nested
+	class TestUpdateRealm {
+
+		@BeforeEach
+		void init() {
+			when(mapper.update(any(), any())).thenReturn(realmRepresentation);
+		}
+
+		@Test
+		void shouldUpdateRealmIfExists() {
+			service.updateRealm(realmRepresentation, REALM);
+
+			verify(remoteService).updateRealm(realmRepresentation);
+		}
+
+		@Test
+		void shouldCallMapper() {
+
+			service.updateRealm(realmRepresentation, REALM);
+
+			verify(mapper).update(realmRepresentation, REALM);
+		}
+
+	}
+	
+	
 	@Nested
 	class TestCreateRealm {
 
-- 
GitLab