From aac8f3f1dd3ae5e3a78bc4f81748b089d585c7ca Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 12 Jun 2023 09:43:17 +0200 Subject: [PATCH] add unit test to reconciler --- pom.xml | 7 +++++ .../java/de/ozgcloud/operator/Config.java | 9 +++--- .../keycloak/KeycloakUserReconciler.java | 4 ++- .../operator/keycloak/KeycloakUserSpec.java | 2 ++ .../operator/OzgOperatorApplicationTests.java | 7 +++-- .../keycloak/KeycloakUserReconcilerTest.java | 28 +++++++++++++++++++ .../keycloak/KeycloakUserSpecTestFactory.java | 15 ++++++++++ .../KeycloakUserStatusTestFactory.java | 12 ++++++++ .../keycloak/KeycloakUserTestFactory.java | 16 +++++++++++ src/test/resources/KeycloakUserTest.yaml | 6 ++++ src/test/resources/application.yaml | 4 +++ 11 files changed, 103 insertions(+), 7 deletions(-) create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java create mode 100644 src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java create mode 100644 src/test/resources/KeycloakUserTest.yaml create mode 100644 src/test/resources/application.yaml diff --git a/pom.xml b/pom.xml index 5492f8f..c7e70e8 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ <properties> <java.version>17</java.version> <operator-sdk.version>5.0.0</operator-sdk.version> +<!-- <operator-sdk.version>4.2.8</operator-sdk.version>--> </properties> <dependencies> <dependency> @@ -39,6 +40,12 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> +<!-- <dependency>--> +<!-- <groupId>io.javaoperatorsdk</groupId>--> +<!-- <artifactId>operator-framework-spring-boot-starter-test</artifactId>--> +<!-- <version>${operator-sdk.version}</version>--> +<!-- <scope>test</scope>--> +<!-- </dependency>--> </dependencies> <build> diff --git a/src/main/java/de/ozgcloud/operator/Config.java b/src/main/java/de/ozgcloud/operator/Config.java index a49ec66..f2fd9bb 100644 --- a/src/main/java/de/ozgcloud/operator/Config.java +++ b/src/main/java/de/ozgcloud/operator/Config.java @@ -5,16 +5,17 @@ import java.util.List; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import de.ozgcloud.operator.keycloak.KeycloakUserReconciler; import io.javaoperatorsdk.operator.Operator; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @Configuration public class Config { -// @Bean -// WebPageReconciler customServiceController() { -// return new WebPageReconciler(); -// } + @Bean + KeycloakUserReconciler customServiceController() { + return new KeycloakUserReconciler(); + } @Bean(initMethod = "start", destroyMethod = "stop") @SuppressWarnings("rawtypes") diff --git a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java index 8d93968..54297d2 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserReconciler.java @@ -1,5 +1,7 @@ package de.ozgcloud.operator.keycloak; +import java.time.LocalDate; + import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @@ -15,7 +17,7 @@ public class KeycloakUserReconciler implements Reconciler<KeycloakUser> { // String name = crd.getMetadata().getName(); String name = crd.getSpec().getName(); log.info("Reconciling: {}", name); - crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name).build()); + crd.setStatus(KeycloakUserStatus.builder().status("Updated status for " + name + LocalDate.now().toString()).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/KeycloakUserSpec.java index 1f813f9..4e38ab0 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/KeycloakUserSpec.java @@ -1,10 +1,12 @@ package de.ozgcloud.operator.keycloak; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @Getter @Setter +@Builder public class KeycloakUserSpec { private String name; diff --git a/src/test/java/de/ozgcloud/operator/OzgOperatorApplicationTests.java b/src/test/java/de/ozgcloud/operator/OzgOperatorApplicationTests.java index f0e8352..5a93a7b 100644 --- a/src/test/java/de/ozgcloud/operator/OzgOperatorApplicationTests.java +++ b/src/test/java/de/ozgcloud/operator/OzgOperatorApplicationTests.java @@ -1,12 +1,15 @@ package de.ozgcloud.operator; import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; -//@SpringBootTest +import io.javaoperatorsdk.operator.springboot.starter.test.EnableMockOperator; + +@SpringBootTest +@EnableMockOperator class OzgOperatorApplicationTests { @Test void contextLoads() { } - } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java new file mode 100644 index 0000000..0ce2f63 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserReconcilerTest.java @@ -0,0 +1,28 @@ +package de.ozgcloud.operator.keycloak; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import lombok.SneakyThrows; + +class KeycloakUserReconcilerTest { + + KeycloakUserReconciler conciler = new KeycloakUserReconciler(); + + @Nested + class TestKeycloalUserStatus { + + @Test + @SneakyThrows + void shouldSetStatus() { + + KeycloakUser user = KeycloakUserTestFactory.create(); + + conciler.reconcile(user, null); + + assertThat(user.getStatus().getStatus()).contains("Updated"); + } + } +} diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java new file mode 100644 index 0000000..98a25f9 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserSpecTestFactory.java @@ -0,0 +1,15 @@ +package de.ozgcloud.operator.keycloak; + +class KeycloakUserSpecTestFactory { + + public static final String NAME = "Hans"; + + public static KeycloakUserSpec create() { + return createBuilder().build(); + } + + private static KeycloakUserSpec.KeycloakUserSpecBuilder createBuilder() { + return KeycloakUserSpec.builder() + .name(NAME); + } +} diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java new file mode 100644 index 0000000..d756b40 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserStatusTestFactory.java @@ -0,0 +1,12 @@ +package de.ozgcloud.operator.keycloak; + +class KeycloakUserStatusTestFactory { + + public static KeycloakUserStatus create() { + return createBuiler().build(); + } + + private static KeycloakUserStatus.KeycloakUserStatusBuilder createBuiler() { + return KeycloakUserStatus.builder(); + } +} diff --git a/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java new file mode 100644 index 0000000..8e4f870 --- /dev/null +++ b/src/test/java/de/ozgcloud/operator/keycloak/KeycloakUserTestFactory.java @@ -0,0 +1,16 @@ +package de.ozgcloud.operator.keycloak; + +class KeycloakUserTestFactory { + + public static final KeycloakUserStatus KEYCLOAK_USER_STATUS = KeycloakUserStatusTestFactory.create(); + + public static final KeycloakUserSpec KEYCLOAK_USER_SPEC = KeycloakUserSpecTestFactory.create(); + + public static KeycloakUser create() { + KeycloakUser keycloakUser = new KeycloakUser(); + keycloakUser.setStatus(KEYCLOAK_USER_STATUS); + keycloakUser.setSpec(KEYCLOAK_USER_SPEC); + return keycloakUser; + } + +} diff --git a/src/test/resources/KeycloakUserTest.yaml b/src/test/resources/KeycloakUserTest.yaml new file mode 100644 index 0000000..77f7702 --- /dev/null +++ b/src/test/resources/KeycloakUserTest.yaml @@ -0,0 +1,6 @@ +apiVersion: "operator.ozgcloud.de/v1" +kind: KeycloakUser +metadata: + name: keycloakuser-test +spec: + name: helge diff --git a/src/test/resources/application.yaml b/src/test/resources/application.yaml new file mode 100644 index 0000000..df32da5 --- /dev/null +++ b/src/test/resources/application.yaml @@ -0,0 +1,4 @@ + +javaoperatorsdk: + test: + crdPaths: classpath:KeycloakUserTest.yaml \ No newline at end of file -- GitLab