From 9dba403f25251f07c005f855678f18592f45f5b4 Mon Sep 17 00:00:00 2001 From: xstefank Date: Mon, 1 Dec 2025 15:29:51 +0100 Subject: [PATCH] fix: Make AbstractOperatorExtension use the kubernetesClient if the infrastructureKubernetesClient is not set Signed-off-by: xstefank --- .../junit/AbstractOperatorExtension.java | 2 +- .../junit/LocallyRunOperatorExtensionIT.java | 42 ---------- .../LocallyRunOperatorExtensionTest.java | 84 +++++++++++++++++++ 3 files changed, 85 insertions(+), 43 deletions(-) delete mode 100644 operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionIT.java create mode 100644 operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionTest.java diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java index c8de93e5c6..eceb6d9d76 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java @@ -78,7 +78,7 @@ protected AbstractOperatorExtension( this.infrastructureKubernetesClient = infrastructureKubernetesClient != null ? infrastructureKubernetesClient - : new KubernetesClientBuilder().build(); + : kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build(); this.kubernetesClient = kubernetesClient != null ? kubernetesClient : this.infrastructureKubernetesClient; this.infrastructure = infrastructure; diff --git a/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionIT.java b/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionIT.java deleted file mode 100644 index b0271810f8..0000000000 --- a/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionIT.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Java Operator SDK Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.javaoperatorsdk.operator.junit; - -import java.nio.file.Path; -import java.util.List; - -import org.junit.jupiter.api.Test; - -import io.fabric8.kubernetes.client.KubernetesClientBuilder; - -import static org.junit.jupiter.api.Assertions.*; - -class LocallyRunOperatorExtensionIT { - - @Test - void getAdditionalCRDsFromFiles() { - System.out.println(Path.of("").toAbsolutePath()); - System.out.println(Path.of("src/test/crd/test.crd").toAbsolutePath()); - final var crds = - LocallyRunOperatorExtension.getAdditionalCRDsFromFiles( - List.of("src/test/resources/crd/test.crd", "src/test/crd/test.crd"), - new KubernetesClientBuilder().build()); - assertNotNull(crds); - assertEquals(2, crds.size()); - assertEquals("src/test/crd/test.crd", crds.get("externals.crd.example")); - assertEquals("src/test/resources/crd/test.crd", crds.get("tests.crd.example")); - } -} diff --git a/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionTest.java b/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionTest.java new file mode 100644 index 0000000000..9491dedf6e --- /dev/null +++ b/operator-framework-junit5/src/test/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtensionTest.java @@ -0,0 +1,84 @@ +/* + * Copyright Java Operator SDK Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.javaoperatorsdk.operator.junit; + +import java.nio.file.Path; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import io.fabric8.kubernetes.client.KubernetesClientBuilder; + +import static org.junit.jupiter.api.Assertions.*; + +class LocallyRunOperatorExtensionTest { + + @Test + void getAdditionalCRDsFromFiles() { + System.out.println(Path.of("").toAbsolutePath()); + System.out.println(Path.of("src/test/crd/test.crd").toAbsolutePath()); + final var crds = + LocallyRunOperatorExtension.getAdditionalCRDsFromFiles( + List.of("src/test/resources/crd/test.crd", "src/test/crd/test.crd"), + new KubernetesClientBuilder().build()); + assertNotNull(crds); + assertEquals(2, crds.size()); + assertEquals("src/test/crd/test.crd", crds.get("externals.crd.example")); + assertEquals("src/test/resources/crd/test.crd", crds.get("tests.crd.example")); + } + + @Test + void overrideInfrastructureAndUserKubernetesClient() { + var infrastructureClient = new KubernetesClientBuilder().build(); + var userKubernetesClient = new KubernetesClientBuilder().build(); + + LocallyRunOperatorExtension extension = + LocallyRunOperatorExtension.builder() + .withInfrastructureKubernetesClient(infrastructureClient) + .withKubernetesClient(userKubernetesClient) + .build(); + + assertEquals(infrastructureClient, extension.getInfrastructureKubernetesClient()); + assertEquals(userKubernetesClient, extension.getKubernetesClient()); + assertNotEquals(extension.getInfrastructureKubernetesClient(), extension.getKubernetesClient()); + } + + @Test + void overrideInfrastructureAndVerifyUserKubernetesClientIsTheSame() { + var infrastructureClient = new KubernetesClientBuilder().build(); + + LocallyRunOperatorExtension extension = + LocallyRunOperatorExtension.builder() + .withInfrastructureKubernetesClient(infrastructureClient) + .build(); + + assertEquals(infrastructureClient, extension.getInfrastructureKubernetesClient()); + assertEquals(infrastructureClient, extension.getKubernetesClient()); + assertEquals(extension.getInfrastructureKubernetesClient(), extension.getKubernetesClient()); + } + + @Test + void overrideKubernetesClientAndVerifyInfrastructureClientIsTheSame() { + var userKubernetesClient = new KubernetesClientBuilder().build(); + + LocallyRunOperatorExtension extension = + LocallyRunOperatorExtension.builder().withKubernetesClient(userKubernetesClient).build(); + + assertEquals(userKubernetesClient, extension.getKubernetesClient()); + assertEquals(userKubernetesClient, extension.getInfrastructureKubernetesClient()); + assertEquals(extension.getKubernetesClient(), extension.getInfrastructureKubernetesClient()); + } +}