diff --git a/pom.xml b/pom.xml index 5492f8f505b2c44438e836e99a6549ccce1931b7..c7e70e8ac7f4b48cb95728cb9baf9337206e1441 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 a49ec666b73791dc9344792a7773256c025e669c..f2fd9bb9c8cf385c0fb52d12c53faab28747f3d3 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 8d9396867d48a0d8f4a4de98e912125487ac3d45..54297d2f24d1f544c229a2e6eaf48fe5c8c31496 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 1f813f97c57aef7facd28f6f55c93f3f4b0e908f..4e38ab0dba2f3ce02b3f2241f5cf96576b3126ae 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 f0e83527efb2274dd882e9a31c045ff7ea6cf060..5a93a7b284068e7373595998005eb49b4b78fea9 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 0000000000000000000000000000000000000000..0ce2f63073466b7d775923dd5e25a56b1783dc66 --- /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 0000000000000000000000000000000000000000..98a25f95a351182325398f32e545c0c1fbbea63e --- /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 0000000000000000000000000000000000000000..d756b40733086146c41b877aad5890b6962ef0a6 --- /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 0000000000000000000000000000000000000000..8e4f870d86b0dc12df5624c1b383dd487e7fd251 --- /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 0000000000000000000000000000000000000000..77f7702947b3e7a90b0a0a002252ef0e72f8636d --- /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 0000000000000000000000000000000000000000..df32da5c206455f2aece6825c0d6634be70c1ebe --- /dev/null +++ b/src/test/resources/application.yaml @@ -0,0 +1,4 @@ + +javaoperatorsdk: + test: + crdPaths: classpath:KeycloakUserTest.yaml \ No newline at end of file