From 84dc90a97577eddf489c658e89aae0a1fe02600a Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 11 Dec 2023 16:41:55 +0100
Subject: [PATCH] OZG-4453 OZG-4670 cleanup; fix tests after cleanup

---
 .../common/kubernetes/KubernetesService.java  | 167 +-----------------
 .../kubernetes/KubernetesServiceTest.java     |  69 ++------
 .../user/ElasticUserReconcilerTest.java       |   5 -
 .../user/ElasticUserSecretBuilderTest.java    |   2 +-
 4 files changed, 14 insertions(+), 229 deletions(-)

diff --git a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/kubernetes/KubernetesService.java b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/kubernetes/KubernetesService.java
index ef03ab1..c0cffc7 100644
--- a/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/kubernetes/KubernetesService.java
+++ b/ozgcloud-elastic-operator/src/main/java/de/ozgcloud/operator/common/kubernetes/KubernetesService.java
@@ -1,15 +1,8 @@
 package de.ozgcloud.operator.common.kubernetes;
 
-import java.util.Objects;
-
 import org.springframework.stereotype.Component;
 
-import io.fabric8.kubernetes.api.model.EnvVar;
-import io.fabric8.kubernetes.api.model.EnvVarBuilder;
-import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.api.model.batch.v1.Job;
-import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.dsl.Resource;
 import lombok.RequiredArgsConstructor;
@@ -20,165 +13,7 @@ public class KubernetesService {
 
 	private final KubernetesClient client;
 
-	public boolean existNamespace(String namespace) {
-		return Objects.nonNull(client.namespaces().withName(namespace).get());
-	}
-
 	public Resource<Secret> getSecretResource(String namespace, String name) {
 		return client.secrets().inNamespace(namespace).withName(name);
 	}
-	
-	
-	//PoC
-	public Pod doInPod(String namespace, String podName) {
-
-//        client.batch().v1().jobs().inNamespace(namespace).createOrReplace(job);
-		client.batch().v1().raw(podName);
-		
-		
-		return client.pods().inNamespace(namespace).withName(podName).get();
-	}
-	
-	public void executeJob(String namespace) {
-		var ELASTIC_USER_SECRET_NAME = "ozg-search-cluster-es-elastic-user";
-		var ELASTIC_SYSTEM_NAMESPACE = "elastic-system";
-		var ELASTIC_USER_SECRET_ELASTIC = "elastic";
-		var secretResource = getSecretResource(ELASTIC_SYSTEM_NAMESPACE, ELASTIC_USER_SECRET_NAME);
-		
-		if(Objects.isNull(secretResource.get())) {
-			//Error - elastic-system namespace secret not exists
-		}
-			
-		
-		var password = secretResource.get().getStringData().get(ELASTIC_USER_SECRET_ELASTIC);
-		var jobEnvs = buildEnvVars(namespace, password);
-	}
-		
-	private Job buildJob(String jobName) {
-		return new JobBuilder()
-	            .withApiVersion("batch/v1")
-	            .withNewMetadata()
-	            .withName(jobName)
-	            .endMetadata()
-	            .withNewSpec()
-	            .withBackoffLimit(4)//TOCHECK: notwendig? wofür?
-	            .withNewTemplate()
-	            .withNewSpec()
-	            .withRestartPolicy("Never")
-	            //containers START
-	            .addNewContainer()
-	            .withName("es-create-access")
-	            .withImage("manusant/curl-jq")
-	            .withEnv(buildEnvVars("password", "namespace"))
-	            
-	            
-	            
-	            
-	            .withCommand("/bin/sh", "-c")
-	            .withArgs("echo \"Job started\"; i=1; while [ $i -le $MAX_COUNT ]; do echo $i; i=$((i+1)) ; sleep 1;done; echo \"Job Done!\"")
-	            .endContainer()
-	            //containers END
-	            .endSpec()
-	            .endTemplate()
-	            .endSpec().build();
-	}
-	
-	static final String ELASTICSEARCH_NAMESPACE_PASSWORD_FIELD = "ES_NS_PASSWORD";
-	static final String ELASTICSEARCH_NAMESPACE_USER_FIELD = "ES_NS_USER";
-	static final String ELASTICSEARCH_CLUSTER_FIELD = "ES_CLUSTER";
-	static final String ELASTICSEARCH_PASSWORD_FIELD = "ELASTICSEARCH_PASSWORD";
-	
-	private EnvVar buildEnvVars(String namespace, String password) {
-//		 - name: ES_NS_PASSWORD
-//       value: "{{ elasticsearch_user_password }}"
-//     - name: ES_NS_USER
-//       value: "{{ kommune }}"
-//     - name: ES_CLUSTER
-//       value: "{{ kommune }}"
-//     - name: ELASTICSEARCH_PASSWORD
-//       valueFrom:
-//         secretKeyRef:
-//           name: ozg-search-cluster-es-elastic-user
-//           key: elastic
-//   command:
-		return new EnvVarBuilder()
-				.withName(ELASTICSEARCH_NAMESPACE_PASSWORD_FIELD).withValue(password)
-				.withName(ELASTICSEARCH_NAMESPACE_USER_FIELD).withValue(namespace)
-				.withName(ELASTICSEARCH_CLUSTER_FIELD).withValue(namespace)
-				.withName(ELASTICSEARCH_PASSWORD_FIELD).withValue(password)
-				.build();
-	}
-}
-
-
-//apiVersion: batch/v1
-//kind: Job
-//metadata:
-//  name: es-create-access-{{ kommune }}
-//spec:
-//  parallelism: 1
-//  completions: 1
-//  template:
-//    metadata:
-//      name: es-create-access-{{ kommune }}
-//    spec:
-//      restartPolicy: Never
-//      containers:
-//        - name: es-create-access
-//          image: manusant/curl-jq
-//          env:
-//            - name: ES_NS_PASSWORD
-//              value: "{{ elasticsearch_user_password }}"
-//            - name: ES_NS_USER
-//              value: "{{ kommune }}"
-//            - name: ES_CLUSTER
-//              value: "{{ kommune }}"
-//            - name: ELASTICSEARCH_PASSWORD
-//              valueFrom:
-//                secretKeyRef:
-//                  name: ozg-search-cluster-es-elastic-user
-//                  key: elastic
-//          command:
-//            - /bin/sh
-//            - -c
-//            - |
-//              curl -k -X PUT -u elastic:$ELASTICSEARCH_PASSWORD -H 'Content-Type: application/json' 'https://ozg-search-cluster-es-http:9200/'$ES_NS_USER
-//      initContainers:
-//        - name: create-es-role
-//          image: manusant/curl-jq
-//          env:
-//            - name: ES_NS_PASSWORD
-//              value: "{{ elasticsearch_user_password }}"
-//            - name: ES_NS_USER
-//              value: "{{ kommune }}"
-//            - name: ES_CLUSTER
-//              value: "{{ kommune }}"
-//            - name: ELASTICSEARCH_PASSWORD
-//              valueFrom:
-//                secretKeyRef:
-//                  name: ozg-search-cluster-es-elastic-user
-//                  key: elastic
-//          command:
-//            - /bin/sh
-//            - -c
-//            - |
-//              curl -k -X POST -u elastic:$ELASTICSEARCH_PASSWORD -H 'Content-Type: application/json' 'https://ozg-search-cluster-es-http:9200/_security/role/'$ES_NS_USER -d '{ "indices": [ { "names": [ "'$ES_NS_USER'*" ], "privileges": ["all"] } ] }'
-//        - name: create-es-user
-//          image: manusant/curl-jq
-//          env:
-//            - name: ES_NS_PASSWORD
-//              value: "{{ elasticsearch_user_password }}"
-//            - name: ES_NS_USER
-//              value: "{{ kommune }}"
-//            - name: ES_CLUSTER
-//              value: "{{ kommune }}"
-//            - name: ELASTICSEARCH_PASSWORD
-//              valueFrom:
-//                secretKeyRef:
-//                  name: ozg-search-cluster-es-elastic-user
-//                  key: elastic
-//          command:
-//            - /bin/sh
-//            - -c
-//            - |
-//              curl -k -X POST -u elastic:$ELASTICSEARCH_PASSWORD -H 'Content-Type: application/json' 'https://ozg-search-cluster-es-http:9200/_security/user/'$ES_NS_USER -d '{"password" : "'$ES_NS_PASSWORD'" ,"roles" : [ "'$ES_NS_USER'" ]}'
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java
index bcbbb65..98cdd53 100644
--- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java
+++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/common/kubernetes/KubernetesServiceTest.java
@@ -2,8 +2,6 @@ package de.ozgcloud.operator.common.kubernetes;
 
 import static org.assertj.core.api.Assertions.*;
 
-import java.net.HttpURLConnection;
-
 import org.junit.Rule;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -11,7 +9,6 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
 import de.ozgcloud.operator.user.ObjectMetaTestFactory;
-import io.fabric8.kubernetes.api.model.Namespace;
 import io.fabric8.kubernetes.api.model.Secret;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.extension.ResourceAdapter;
@@ -32,57 +29,25 @@ class KubernetesServiceTest {
 		service = new KubernetesService(client);
 	}
 
-	@DisplayName("Exist namespace")
-	@Nested
-	class TestExistNamespace {
-
-		private final Namespace namespace = NamespaceTestFactory.create();
-		
-		@Test
-		public void shouldReturnTrueIfExistsWithCrud() {
-			var namespaceResource = client.namespaces().withName(ObjectMetaTestFactory.NAMESPACE);
-			var adapter = new ResourceAdapter<>(namespaceResource);
-			adapter.create(namespace);
-			
-			var exists = service.existNamespace(ObjectMetaTestFactory.NAMESPACE);
-
-			assertThat(exists).isTrue();
-		}
-
-		@Test
-		public void shouldReturnTrueIfExists() {
-			server.expect().get().withPath("/api/v1/namespaces/" + ObjectMetaTestFactory.NAMESPACE)
-					.andReturn(HttpURLConnection.HTTP_OK, namespace)
-					.once();
-
-			var exists = service.existNamespace(ObjectMetaTestFactory.NAMESPACE);
-
-			assertThat(exists).isTrue();
-		}
-
-		@Test
-		public void shouldReturnFalseIfMissing() {
-			var exists = service.existNamespace(ObjectMetaTestFactory.NAMESPACE);
-
-			assertThat(exists).isFalse();
-		}
-	}
-
 	@DisplayName("Get secret")
 	@Nested
 	class TestGetSecret {
 		
-		private final Secret secret = SecretTestFactory.create(); 
-
+		private Secret secret = SecretTestFactory.create();
+		
 		@Test
 		void shouldReturnExistingResourceIfExists() {
-			server.expect().get().withPath("/api/v1/namespaces/" + ObjectMetaTestFactory.NAMESPACE + "/secrets/" + SecretTestFactory.NAME)
-					.andReturn(HttpURLConnection.HTTP_OK, secret)
-					.once();
-
+			createSecret();
+			
 			var secret = getSecret();
 
-			assertThat(secret).isNotNull();
+			assertThat(secret).isNotNull().isEqualTo(secret);
+		}
+		
+		private void createSecret() {
+			var secretResource = client.secrets().withName(SecretTestFactory.NAME);
+			var adapter = new ResourceAdapter<>(secretResource);
+			adapter.create(secret);
 		}
 
 		@Test
@@ -96,14 +61,4 @@ class KubernetesServiceTest {
 			return service.getSecretResource(ObjectMetaTestFactory.NAMESPACE, SecretTestFactory.NAME).get();
 		}
 	}
-	
-	//PoC
-	@Nested
-	class TestDoInPod {
-		
-		@Test
-		void doSomething() {
-			var pod = service.doInPod("test", "pod");
-		}
-	}
-}
+}
\ No newline at end of file
diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java
index 20915e5..97e47dc 100644
--- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java
+++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserReconcilerTest.java
@@ -7,22 +7,17 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.mockito.Spy;
 
-import de.ozgcloud.operator.common.kubernetes.KubernetesService;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
 import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
 import lombok.SneakyThrows;
 
 class ElasticUserReconcilerTest {
 	
-	@Spy
 	@InjectMocks
 	private ElasticUserReconciler reconciler;
 	@Mock
 	private ElasticUserService service;
-	@Mock
-	private KubernetesService kubernetesService;
 
 	@DisplayName("Reconcile")
 	@Nested
diff --git a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java
index 7795ab6..5172cb9 100644
--- a/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java
+++ b/ozgcloud-elastic-operator/src/test/java/de/ozgcloud/operator/user/ElasticUserSecretBuilderTest.java
@@ -33,7 +33,7 @@ class ElasticUserSecretBuilderTest {
 			void shouldContainName() {
 				var secret = builder.build(resource, secretName);
 				
-				assertThat(secret.getMetadata().getName()).isEqualTo(ElasticUserSecretBuilder.SECRET_TYPE);
+				assertThat(secret.getMetadata().getName()).isEqualTo(secretName);
 			}
 			
 			@Test
-- 
GitLab