From 9b15b996b936d7ba12732b4bf3c4afd624a63d6f Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 16 Jun 2023 09:51:41 +0200
Subject: [PATCH] cdr status test

---
 pom.xml                                       |  7 ++++
 .../java/de/ozgcloud/operator/Config.java     |  2 +-
 .../operator/SpringNativeConfiguration.java   |  6 ++--
 .../operator/keycloak/KeycloakClient.java     | 33 +++++++++++++++++++
 .../user/KeycloakClientUserRemoteService.java | 19 +++++++++++
 .../user/KeycloakClientUserService.java       | 15 +++++++++
 .../keycloak/{ => user}/KeycloakUser.java     |  2 +-
 .../{ => user}/KeycloakUserReconciler.java    |  4 +--
 .../keycloak/{ => user}/KeycloakUserSpec.java |  2 +-
 .../{ => user}/KeycloakUserStatus.java        |  4 ++-
 .../keycloak/client/KeycloakClientTest.java   | 14 ++++++++
 .../KeycloakClientUserRemoteServiceTest.java  | 31 +++++++++++++++++
 .../KeycloakUserReconcilerTest.java           |  4 ++-
 .../KeycloakUserSpecTestFactory.java          |  5 +--
 .../KeycloakUserSpecUserTestFactory.java      |  4 +--
 .../KeycloakUserStatusTestFactory.java        |  4 ++-
 .../{ => user}/KeycloakUserTestFactory.java   |  6 +++-
 17 files changed, 146 insertions(+), 16 deletions(-)
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java
 create mode 100644 src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java
 rename src/main/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUser.java (89%)
 rename src/main/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserReconciler.java (94%)
 rename src/main/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserSpec.java (97%)
 rename src/main/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserStatus.java (84%)
 create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java
 create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java
 rename src/test/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserReconcilerTest.java (86%)
 rename src/test/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserSpecTestFactory.java (66%)
 rename src/test/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserSpecUserTestFactory.java (72%)
 rename src/test/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserStatusTestFactory.java (69%)
 rename src/test/java/de/ozgcloud/operator/keycloak/{ => user}/KeycloakUserTestFactory.java (66%)

diff --git a/pom.xml b/pom.xml
index 9b17e3e..04d90dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,13 @@
 <!--			<artifactId>spring-boot-starter-web-services</artifactId>-->
 <!--		</dependency>-->
 
+<!-- https://mvnrepository.com/artifact/org.keycloak/keycloak-admin-client -->
+<dependency>
+    <groupId>org.keycloak</groupId>
+    <artifactId>keycloak-admin-client</artifactId>
+    <version>21.1.1</version>
+</dependency>
+
 
 		<dependency>
 			<groupId>io.javaoperatorsdk</groupId>
diff --git a/src/main/java/de/ozgcloud/operator/Config.java b/src/main/java/de/ozgcloud/operator/Config.java
index a24156d..bb7a11e 100644
--- a/src/main/java/de/ozgcloud/operator/Config.java
+++ b/src/main/java/de/ozgcloud/operator/Config.java
@@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserReconciler;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserReconciler;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.javaoperatorsdk.operator.Operator;
 import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
diff --git a/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java b/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
index ea9651c..b55cfe1 100644
--- a/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
+++ b/src/main/java/de/ozgcloud/operator/SpringNativeConfiguration.java
@@ -12,9 +12,9 @@ import org.springframework.aot.hint.RuntimeHintsRegistrar;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.ImportRuntimeHints;
 
-import de.ozgcloud.operator.keycloak.KeycloakUser;
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec;
-import de.ozgcloud.operator.keycloak.KeycloakUserStatus;
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 import io.fabric8.kubernetes.api.model.KubernetesResource;
 import io.fabric8.kubernetes.api.model.NamedCluster;
 import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java
new file mode 100644
index 0000000..cc9f184
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakClient.java
@@ -0,0 +1,33 @@
+package de.ozgcloud.operator.keycloak;
+
+import org.keycloak.admin.client.Keycloak;
+import org.keycloak.admin.client.KeycloakBuilder;
+import org.keycloak.representations.idm.UserRepresentation;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.java.Log;
+
+@Log
+@Component
+public class KeycloakClient {
+
+	public Keycloak getKeycloak() {
+
+		Keycloak keycloak = KeycloakBuilder.builder() //
+				.serverUrl("https://sso.dev.by.ozg-cloud.de/") //
+				.realm("master") //
+//				.grantType(OAuth2Constants.PASSWORD) //
+				.username("admin") //
+				.password(" ") //
+				.clientId("admin-cli")
+				.build();
+
+		log.info(keycloak.realms().findAll().toString());
+
+		UserRepresentation user = new UserRepresentation();
+		user.setUsername("helge");
+		keycloak.realm("by-torsten-ozg-operator-dev").users().create(user);
+
+		return keycloak;
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java
new file mode 100644
index 0000000..63ce46f
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteService.java
@@ -0,0 +1,19 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import org.keycloak.representations.account.UserRepresentation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+@Component
+public class KeycloakClientUserRemoteService {
+
+	@Autowired
+	private KeycloakClient keycloakClient;
+
+	void createUser(UserRepresentation user) {
+
+		keycloakClient.getKeycloak();
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java
new file mode 100644
index 0000000..a87f0ed
--- /dev/null
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserService.java
@@ -0,0 +1,15 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class KeycloakClientUserService {
+
+	@Autowired
+	KeycloakClientUserRemoteService remoteService;
+
+	void addUser(KeycloakUserSpec userSpec) {
+
+	}
+}
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
similarity index 89%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
index bb3a997..5badf37 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUser.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUser.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import io.fabric8.kubernetes.api.model.Namespaced;
 import io.fabric8.kubernetes.client.CustomResource;
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
similarity index 94%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
index d1155f9..3aff0f6 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import java.time.LocalDate;
 import java.util.Base64;
@@ -31,7 +31,7 @@ public class KeycloakUserReconciler implements Reconciler<KeycloakUser> {
 		String namespace = crd.getMetadata().getNamespace();
 		log.warning("Reconciling: " + name + "/" + namespace);
 		log.warning("SecretTest:" + getKeycloakRealmAdminPassword(namespace));
-		crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name + LocalDate.now().toString()).build());
+		crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name + LocalDate.now().toString()).phase("Pending").build());
 		return UpdateControl.updateStatus(crd);
 	}
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
similarity index 97%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
index e8c6beb..0c0ef4e 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpec.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import java.util.List;
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
similarity index 84%
rename from src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java
rename to src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
index 4d4dfd3..7e83e84 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserStatus.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatus.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
 import lombok.AllArgsConstructor;
@@ -15,4 +15,6 @@ import lombok.Setter;
 public class KeycloakUserStatus extends ObservedGenerationAwareStatus {
 
 	private String status;
+
+	private String phase;
 }
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java
new file mode 100644
index 0000000..17303f7
--- /dev/null
+++ b/src/test/java/de/ozgcloud/operator/keycloak/client/KeycloakClientTest.java
@@ -0,0 +1,14 @@
+package de.ozgcloud.operator.keycloak.client;
+
+import org.junit.jupiter.api.Test;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+class KeycloakClientTest {
+
+	@Test
+	void test() {
+		KeycloakClient kc = new KeycloakClient();
+//		kc.test();
+	}
+}
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java
new file mode 100644
index 0000000..86cd6ff
--- /dev/null
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakClientUserRemoteServiceTest.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.operator.keycloak.user;
+
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import de.ozgcloud.operator.keycloak.KeycloakClient;
+
+@ExtendWith(MockitoExtension.class)
+class KeycloakClientUserRemoteServiceTest {
+
+	@Spy
+	@InjectMocks
+	KeycloakClientUserRemoteService userRemoteService;
+
+	@Mock
+	KeycloakClient keycloakClient;
+
+	@Test
+	void test() {
+
+		userRemoteService.createUser(null);
+
+		verify(keycloakClient).getKeycloak();
+	}
+}
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
similarity index 86%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
index 12a66bf..9c66f82 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconcilerTest.java
@@ -1,4 +1,4 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -12,6 +12,8 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserReconciler;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import lombok.SneakyThrows;
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
similarity index 66%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
index 847bde3..cd0c9d0 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecTestFactory.java
@@ -1,6 +1,7 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec.KeycloakUserSpecUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec.KeycloakUserSpecUser;
 
 class KeycloakUserSpecTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
similarity index 72%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
index e61e787..d388671 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecUserTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserSpecUserTestFactory.java
@@ -1,6 +1,6 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
 
-import de.ozgcloud.operator.keycloak.KeycloakUserSpec.KeycloakUserSpecUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec.KeycloakUserSpecUser;
 
 class KeycloakUserSpecUserTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
similarity index 69%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
index d756b40..89d42fb 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserStatusTestFactory.java
@@ -1,4 +1,6 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
+
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 
 class KeycloakUserStatusTestFactory {
 
diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
similarity index 66%
rename from src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java
rename to src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
index 8e4f870..fd3a9fb 100644
--- a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java
+++ b/src/test/java/de/ozgcloud/operator/keycloak/user/KeycloakUserTestFactory.java
@@ -1,4 +1,8 @@
-package de.ozgcloud.operator.keycloak;
+package de.ozgcloud.operator.keycloak.user;
+
+import de.ozgcloud.operator.keycloak.user.KeycloakUser;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserSpec;
+import de.ozgcloud.operator.keycloak.user.KeycloakUserStatus;
 
 class KeycloakUserTestFactory {
 
-- 
GitLab