From 0b2d208ceb8ffd36eb92f2c391b25c3631bc1508 Mon Sep 17 00:00:00 2001 From: erabii Date: Thu, 8 Sep 2022 00:16:40 +0300 Subject: [PATCH] Fix reactive discovery client tests (#1069) --- .../client/ActuatorDisabledHealthTest.java | 9 +-- .../client/ActuatorEnabledHealthTest.java | 5 +- .../Fabric8AutoConfigurationTests.java | 8 +- .../Fabric8HealthIndicatorDisabledTest.java | 13 ++-- .../Fabric8InsideHealthIndicatorTest.java | 76 +++++++------------ .../Fabric8InsideInfoContributorTest.java | 69 ++++++----------- .../Fabric8NotInsideHealthIndicatorTest.java | 39 +++------- .../Fabric8NotInsideInfoContributorTest.java | 30 ++------ .../cloud/kubernetes/Fabric8PodUtilsTest.java | 18 ++--- ...serAgentPropertiesConfigurationTests.java} | 2 +- .../fabric8/config/HealthIndicatorTest.java | 15 ++-- .../config/actuator/DisabledHealthTest.java | 7 +- .../config/actuator/EnabledHealthTest.java | 7 +- 13 files changed, 99 insertions(+), 199 deletions(-) rename spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/{Fabric8UserAgentPropertiesConfiguration.java => Fabric8UserAgentPropertiesConfigurationTests.java} (96%) diff --git a/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorDisabledHealthTest.java b/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorDisabledHealthTest.java index 428666bf..87c6a09e 100644 --- a/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorDisabledHealthTest.java +++ b/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorDisabledHealthTest.java @@ -16,7 +16,6 @@ package org.springframework.cloud.kubernetes.client; -import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -33,7 +32,7 @@ import org.springframework.test.web.reactive.server.WebTestClient; */ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "management.health.kubernetes.enabled=false", "management.endpoint.health.show-details=always", - "management.endpoint.health.show-components=always", + "management.endpoint.health.show-components=always", "spring.main.cloud-platform=KUBERNETES", "management.endpoints.web.exposure.include=health" }) class ActuatorDisabledHealthTest { @@ -47,10 +46,10 @@ class ActuatorDisabledHealthTest { private int port; @Test - void healthEndpointShouldContainKubernetes() { + void healthEndpointShouldNotContainKubernetes() { this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(Matchers.not(Matchers.containsString("kubernetes"))); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").doesNotExist(); Assertions.assertNull(registry.getContributor("kubernetes"), "reactive kubernetes contributor must NOT be present when 'management.health.kubernetes.enabled=false'"); diff --git a/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorEnabledHealthTest.java b/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorEnabledHealthTest.java index 72bf4b03..e28164e2 100644 --- a/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorEnabledHealthTest.java +++ b/spring-cloud-kubernetes-client-autoconfig/src/test/java/org/springframework/cloud/kubernetes/client/ActuatorEnabledHealthTest.java @@ -16,7 +16,6 @@ package org.springframework.cloud.kubernetes.client; -import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -46,8 +45,8 @@ class ActuatorEnabledHealthTest { @Test void healthEndpointShouldContainKubernetes() { this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(Matchers.containsString("kubernetes")); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").exists(); Assertions.assertNotNull(registry.getContributor("kubernetes"), "reactive kubernetes contributor must be present when 'management.health.kubernetes.enabled=true'"); diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java index 58d84bf5..c8a217db 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8AutoConfigurationTests.java @@ -38,7 +38,7 @@ import static org.assertj.core.api.Assertions.assertThat; properties = { "spring.main.cloud-platform=KUBERNETES", "spring.cloud.kubernetes.client.password=mypassword", "spring.cloud.kubernetes.client.proxy-password=myproxypassword" }) @EnableKubernetesMockClient(crud = true, https = false) -public class Fabric8AutoConfigurationTests { +class Fabric8AutoConfigurationTests { private static KubernetesClient mockClient; @@ -46,7 +46,7 @@ public class Fabric8AutoConfigurationTests { ConfigurableApplicationContext context; @BeforeAll - public static void setUpBeforeClass() { + static void setUpBeforeClass() { // Configure the kubernetes master url to point to the mock server System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl()); System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); @@ -57,7 +57,7 @@ public class Fabric8AutoConfigurationTests { } @AfterAll - public static void afterClass() { + static void afterClass() { System.clearProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY); System.clearProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY); System.clearProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY); @@ -67,7 +67,7 @@ public class Fabric8AutoConfigurationTests { } @Test - public void beansAreCreated() { + void beansAreCreated() { assertThat(context.getBeanNamesForType(Config.class)).hasSize(1); assertThat(context.getBeanNamesForType(KubernetesClient.class)).hasSize(1); assertThat(context.getBeanNamesForType(Fabric8PodUtils.class)).hasSize(1); diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java index f02af7f9..99389645 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8HealthIndicatorDisabledTest.java @@ -29,13 +29,10 @@ import org.springframework.cloud.kubernetes.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.not; - @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "management.health.kubernetes.enabled=false" }) @EnableKubernetesMockClient(crud = true, https = false) -public class Fabric8HealthIndicatorDisabledTest { +class Fabric8HealthIndicatorDisabledTest { private static KubernetesClient mockClient; @@ -46,7 +43,7 @@ public class Fabric8HealthIndicatorDisabledTest { private int port; @BeforeAll - public static void setUpBeforeClass() { + static void setUpBeforeClass() { // Configure the kubernetes master url to point to the mock server System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl()); System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); @@ -56,10 +53,10 @@ public class Fabric8HealthIndicatorDisabledTest { } @Test - public void healthEndpointShouldContainKubernetes() { + void healthEndpointShouldContainKubernetes() { this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(not(containsString("kubernetes"))); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").doesNotExist(); } } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java index 2c478d4d..cf64f98c 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideHealthIndicatorTest.java @@ -17,16 +17,11 @@ package org.springframework.cloud.kubernetes; import java.util.Collections; -import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.PodStatus; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -51,7 +46,7 @@ import org.springframework.test.web.reactive.server.WebTestClient; @Import(Fabric8InsideHealthIndicatorTest.KubernetesActuatorTestConfiguration.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "management.endpoint.health.show-details=always" }) -public class Fabric8InsideHealthIndicatorTest { +class Fabric8InsideHealthIndicatorTest { @Autowired private WebTestClient webClient; @@ -59,28 +54,6 @@ public class Fabric8InsideHealthIndicatorTest { @Value("${local.server.port}") private int port; - @Test - public void test() { - this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(Fabric8InsideHealthIndicatorTest::validateKubernetes); - } - - private static Pod stubPod() { - - PodStatus status = new PodStatus(); - status.setPodIP("10.1.1.1"); - status.setHostIP("192.160.10.3"); - - PodSpec spec = new PodSpec(); - spec.setServiceAccountName("serviceAccountName"); - spec.setNodeName("nodeName"); - - return new PodBuilder().withNewMetadata().withName("pod").withNamespace("namespace") - .withLabels(Collections.singletonMap("labelName", "labelValue")).endMetadata().withStatus(status) - .withSpec(spec).build(); - } - /** *
 	 * "stubKubernetes": {
@@ -99,31 +72,34 @@ public class Fabric8InsideHealthIndicatorTest {
 	 *       }
 	 *  
*/ - @SuppressWarnings("unchecked") - private static void validateKubernetes(String input) { - try { - Map map = new ObjectMapper().readValue(input, new TypeReference>() { + @Test + void test() { + this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.stubKubernetes.status").isEqualTo("UP") + .jsonPath("components.stubKubernetes.details.nodeName").isEqualTo("nodeName") + .jsonPath("components.stubKubernetes.details.podIp").isEqualTo("10.1.1.1") + .jsonPath("components.stubKubernetes.details.hostIp").isEqualTo("192.160.10.3") + .jsonPath("components.stubKubernetes.details.namespace").isEqualTo("namespace") + .jsonPath("components.stubKubernetes.details.podName").isEqualTo("pod") + .jsonPath("components.stubKubernetes.details.serviceAccount").isEqualTo("serviceAccountName") + .jsonPath("components.stubKubernetes.details.inside").isEqualTo("true") + .jsonPath("components.stubKubernetes.details.labels.labelName").isEqualTo("labelValue"); + } - }); - Map kubernetesProperties = (Map) ((Map) map - .get("components")).get("stubKubernetes"); - Assertions.assertEquals("UP", kubernetesProperties.get("status")); + private static Pod stubPod() { - Map details = (Map) kubernetesProperties.get("details"); - Assertions.assertEquals("nodeName", details.get("nodeName")); - Assertions.assertEquals("10.1.1.1", details.get("podIp")); - Assertions.assertEquals("192.160.10.3", details.get("hostIp")); - Assertions.assertEquals("namespace", details.get("namespace")); - Assertions.assertEquals("pod", details.get("podName")); - Assertions.assertEquals("serviceAccountName", details.get("serviceAccount")); - Assertions.assertTrue((Boolean) details.get("inside")); + PodStatus status = new PodStatus(); + status.setPodIP("10.1.1.1"); + status.setHostIP("192.160.10.3"); - Map labels = (Map) details.get("labels"); - Assertions.assertEquals("labelValue", labels.get("labelName")); - } - catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + PodSpec spec = new PodSpec(); + spec.setServiceAccountName("serviceAccountName"); + spec.setNodeName("nodeName"); + + return new PodBuilder().withNewMetadata().withName("pod").withNamespace("namespace") + .withLabels(Collections.singletonMap("labelName", "labelValue")).endMetadata().withStatus(status) + .withSpec(spec).build(); } @Configuration diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java index 95b6f552..4fc9250d 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8InsideInfoContributorTest.java @@ -16,16 +16,10 @@ package org.springframework.cloud.kubernetes; -import java.util.Map; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.PodSpec; import io.fabric8.kubernetes.api.model.PodStatus; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -49,7 +43,7 @@ import org.springframework.test.web.reactive.server.WebTestClient; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoints.web.exposure.include=info", "management.endpoint.info.show-details=always", "management.info.kubernetes.enabled=true" }) -public class Fabric8InsideInfoContributorTest { +class Fabric8InsideInfoContributorTest { @Autowired private WebTestClient webClient; @@ -57,11 +51,31 @@ public class Fabric8InsideInfoContributorTest { @Value("${local.server.port}") private int port; + /** + *
+	 *   "kubernetes": {
+	 *     "nodeName": "nodeName",
+	 *     "podIp": "10.1.1.1",
+	 *     "hostIp": "192.160.10.3",
+	 *     "namespace": "namespace",
+	 *     "podName": "pod",
+	 *     "serviceAccount": "serviceAccountName",
+	 *     "inside": true
+	 *   }
+	 *  
+ */ @Test - public void test() { + void test() { this.webClient.get().uri("http://localhost:{port}/actuator/info", this.port).accept(MediaType.APPLICATION_JSON) - .exchange().expectStatus().isOk().expectBody(String.class) - .value(Fabric8InsideInfoContributorTest::validateInfo); + .exchange().expectStatus().isOk().expectBody() + .jsonPath("kubernetes.nodeName").isEqualTo("nodeName") + .jsonPath("kubernetes.podIp").isEqualTo("10.1.1.1") + .jsonPath("kubernetes.hostIp").isEqualTo("192.160.10.3") + .jsonPath("kubernetes.namespace").isEqualTo("namespace") + .jsonPath("kubernetes.podName").isEqualTo("pod") + .jsonPath("kubernetes.serviceAccount").isEqualTo("serviceAccountName") + .jsonPath("kubernetes.inside").isEqualTo("true"); + } private static Pod stubPod() { @@ -78,41 +92,6 @@ public class Fabric8InsideInfoContributorTest { .withStatus(status).withSpec(spec).build(); } - /** - *
-	 *   "kubernetes": {
-	 *     "nodeName": "nodeName",
-	 *     "podIp": "10.1.1.1",
-	 *     "hostIp": "192.160.10.3",
-	 *     "namespace": "namespace",
-	 *     "podName": "pod",
-	 *     "serviceAccount": "serviceAccountName",
-	 *     "inside": true
-	 *   }
-	 *  
- */ - @SuppressWarnings("unchecked") - private static void validateInfo(String input) { - try { - Map map = new ObjectMapper().readValue(input, new TypeReference>() { - - }); - Map infoProperties = (Map) map.get("kubernetes"); - - Assertions.assertEquals("nodeName", infoProperties.get("nodeName")); - Assertions.assertEquals("10.1.1.1", infoProperties.get("podIp")); - Assertions.assertEquals("192.160.10.3", infoProperties.get("hostIp")); - Assertions.assertEquals("namespace", infoProperties.get("namespace")); - Assertions.assertEquals("pod", infoProperties.get("podName")); - Assertions.assertEquals("serviceAccountName", infoProperties.get("serviceAccount")); - Assertions.assertTrue((Boolean) infoProperties.get("inside")); - - } - catch (JsonProcessingException e) { - throw new RuntimeException(e); - } - } - @Configuration static class InfoContributorTestConfig { diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java index d5e4580b..065f9d74 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideHealthIndicatorTest.java @@ -16,16 +16,10 @@ package org.springframework.cloud.kubernetes; -import java.util.Map; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -39,7 +33,7 @@ import org.springframework.test.web.reactive.server.WebTestClient; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoint.health.show-details=always" }) @EnableKubernetesMockClient(crud = true, https = false) -public class Fabric8NotInsideHealthIndicatorTest { +class Fabric8NotInsideHealthIndicatorTest { private static KubernetesClient mockClient; @@ -50,7 +44,7 @@ public class Fabric8NotInsideHealthIndicatorTest { private int port; @BeforeAll - public static void setUpBeforeClass() { + static void setUpBeforeClass() { // Configure the kubernetes master url to point to the mock server System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl()); System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); @@ -61,7 +55,7 @@ public class Fabric8NotInsideHealthIndicatorTest { } @AfterAll - public static void afterClass() { + static void afterClass() { System.clearProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY); System.clearProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY); System.clearProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY); @@ -70,13 +64,6 @@ public class Fabric8NotInsideHealthIndicatorTest { System.clearProperty(Config.KUBERNETES_HTTP2_DISABLE); } - @Test - public void healthEndpointShouldContainKubernetes() { - this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(this::validateKubernetes); - } - /** *
 	 * 		"kubernetes":{
@@ -87,22 +74,14 @@ public class Fabric8NotInsideHealthIndicatorTest {
 	 * 	     }
 	 * 
*/ - @SuppressWarnings("unchecked") - private void validateKubernetes(String input) { - try { - Map map = new ObjectMapper().readValue(input, new TypeReference>() { + @Test + void healthEndpointShouldContainKubernetes() { - }); - Map kubernetesProperties = (Map) ((Map) map - .get("components")).get("kubernetes"); - Assertions.assertEquals("UP", kubernetesProperties.get("status")); + this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes.status").isEqualTo("UP") + .jsonPath("components.kubernetes.details.inside").isEqualTo("false"); - Map details = (Map) kubernetesProperties.get("details"); - Assertions.assertFalse((Boolean) details.get("inside")); - } - catch (JsonProcessingException e) { - throw new RuntimeException(e); - } } } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java index 0e913d39..19cad8c8 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8NotInsideInfoContributorTest.java @@ -16,14 +16,8 @@ package org.springframework.cloud.kubernetes; -import java.util.Map; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -37,7 +31,7 @@ import org.springframework.test.web.reactive.server.WebTestClient; properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoints.web.exposure.include=info", "management.endpoint.info.show-details=always", "management.info.kubernetes.enabled=true" }) @EnableKubernetesMockClient(crud = true, https = false) -public class Fabric8NotInsideInfoContributorTest { +class Fabric8NotInsideInfoContributorTest { private static KubernetesClient client; @@ -47,12 +41,6 @@ public class Fabric8NotInsideInfoContributorTest { @Value("${local.server.port}") private int port; - @Test - public void infoEndpointShouldContainKubernetes() { - this.webClient.get().uri("http://localhost:{port}/actuator/info", this.port).accept(MediaType.APPLICATION_JSON) - .exchange().expectStatus().isOk().expectBody(String.class).value(this::validateInfo); - } - /** *
 	 *    "kubernetes":{
@@ -60,18 +48,10 @@ public class Fabric8NotInsideInfoContributorTest {
 	 *    }
 	 * 
*/ - @SuppressWarnings("unchecked") - private void validateInfo(String input) { - try { - Map map = new ObjectMapper().readValue(input, new TypeReference>() { - - }); - Map kubernetesProperties = (Map) map.get("kubernetes"); - Assertions.assertFalse((Boolean) kubernetesProperties.get("inside")); - } - catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + @Test + void infoEndpointShouldContainKubernetes() { + this.webClient.get().uri("http://localhost:{port}/actuator/info", this.port).accept(MediaType.APPLICATION_JSON) + .exchange().expectStatus().isOk().expectBody().jsonPath("kubernetes.inside").isEqualTo("false"); } } diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java index c5f7e541..368dcb6b 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/Fabric8PodUtilsTest.java @@ -38,7 +38,7 @@ import org.springframework.cloud.kubernetes.commons.EnvReader; import org.springframework.cloud.kubernetes.fabric8.Fabric8PodUtils; @SuppressWarnings("unchecked") -public class Fabric8PodUtilsTest { +class Fabric8PodUtilsTest { private static final String KUBERNETES_SERVICE_HOST = Fabric8PodUtils.KUBERNETES_SERVICE_HOST; @@ -73,26 +73,26 @@ public class Fabric8PodUtilsTest { private MockedStatic paths; @BeforeEach - public void before() { + void before() { envReader = Mockito.mockStatic(EnvReader.class); paths = Mockito.mockStatic(Paths.class); } @AfterEach - public void after() { + void after() { envReader.close(); paths.close(); } @Test - public void constructorThrowsIllegalArgumentExceptionWhenKubeClientNull() { + void constructorThrowsIllegalArgumentExceptionWhenKubeClientNull() { // expect an IllegalArgumentException if KubernetesClient argument is // null Assertions.assertThrows(IllegalArgumentException.class, () -> new Fabric8PodUtils(null)); } @Test - public void serviceHostNotPresent() { + void serviceHostNotPresent() { mockHost(null); Fabric8PodUtils util = new Fabric8PodUtils(client); Supplier sup = util.currentPod(); @@ -101,7 +101,7 @@ public class Fabric8PodUtilsTest { } @Test - public void hostnameNotPresent() { + void hostnameNotPresent() { mockHost(HOST); mockHostname(null); Fabric8PodUtils util = new Fabric8PodUtils(client); @@ -111,7 +111,7 @@ public class Fabric8PodUtilsTest { } @Test - public void serviceAccountPathNotPresent() { + void serviceAccountPathNotPresent() { mockTokenPath(false); mockHostname(HOST); mockHostname(POD_HOSTNAME); @@ -122,7 +122,7 @@ public class Fabric8PodUtilsTest { } @Test - public void serviceAccountCertPathNotPresent() { + void serviceAccountCertPathNotPresent() { mockTokenPath(true); mockCertPath(false); mockHostname(HOST); @@ -134,7 +134,7 @@ public class Fabric8PodUtilsTest { } @Test - public void allPresent() { + void allPresent() { mockTokenPath(true); mockCertPath(true); mockHost(HOST); diff --git a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfiguration.java b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java similarity index 96% rename from spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfiguration.java rename to spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java index 0fd907d2..65c2c471 100644 --- a/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfiguration.java +++ b/spring-cloud-kubernetes-fabric8-autoconfig/src/test/java/org/springframework/cloud/kubernetes/fabric8/Fabric8UserAgentPropertiesConfigurationTests.java @@ -30,7 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat; */ @SpringBootTest(classes = App.class, properties = { "spring.cloud.kubernetes.client.userAgent=non-default", "spring.main.cloud-platform=KUBERNETES" }) -class Fabric8UserAgentPropertiesConfiguration { +class Fabric8UserAgentPropertiesConfigurationTests { @Autowired private KubernetesClient client; diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/HealthIndicatorTest.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/HealthIndicatorTest.java index de046f4e..18803382 100644 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/HealthIndicatorTest.java +++ b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/HealthIndicatorTest.java @@ -21,23 +21,18 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.kubernetes.fabric8.config.example.App; import org.springframework.http.MediaType; -import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.reactive.server.WebTestClient; -import static org.hamcrest.Matchers.containsString; - -@ExtendWith(SpringExtension.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, properties = { "spring.main.cloud-platform=KUBERNETES", "management.endpoint.health.show-details=always" }) @EnableKubernetesMockClient(crud = true, https = false) -public class HealthIndicatorTest { +class HealthIndicatorTest { private static KubernetesClient mockClient; @@ -48,7 +43,7 @@ public class HealthIndicatorTest { private WebTestClient webClient; @BeforeAll - public static void setUpBeforeClass() { + static void setUpBeforeClass() { // Configure the kubernetes master url to point to the mock server System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl()); @@ -60,10 +55,10 @@ public class HealthIndicatorTest { } @Test - public void healthEndpointShouldContainKubernetes() { + void healthEndpointShouldContainKubernetes() { this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(containsString("kubernetes")); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").exists(); } } diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/DisabledHealthTest.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/DisabledHealthTest.java index 12b21f20..b752173b 100644 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/DisabledHealthTest.java +++ b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/DisabledHealthTest.java @@ -27,9 +27,6 @@ import org.springframework.cloud.kubernetes.fabric8.config.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.not; - /** * @author wind57 */ @@ -51,8 +48,8 @@ class DisabledHealthTest { @Test void healthEndpointShouldContainKubernetes() { this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(not(containsString("kubernetes"))); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").doesNotExist(); Assertions.assertNull(registry.getContributor("kubernetes"), "reactive kubernetes contributor must NOT be present when 'management.health.kubernetes.enabled=false'"); diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/EnabledHealthTest.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/EnabledHealthTest.java index d1ba5a7a..f795cbad 100644 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/EnabledHealthTest.java +++ b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/actuator/EnabledHealthTest.java @@ -27,8 +27,6 @@ import org.springframework.cloud.kubernetes.fabric8.config.example.App; import org.springframework.http.MediaType; import org.springframework.test.web.reactive.server.WebTestClient; -import static org.hamcrest.Matchers.containsString; - /** * @author wind57 */ @@ -49,9 +47,10 @@ class EnabledHealthTest { @Test void healthEndpointShouldContainKubernetes() { + this.webClient.get().uri("http://localhost:{port}/actuator/health", this.port) - .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody(String.class) - .value(containsString("kubernetes")); + .accept(MediaType.APPLICATION_JSON).exchange().expectStatus().isOk().expectBody() + .jsonPath("components.kubernetes").exists(); Assertions.assertNotNull(registry.getContributor("kubernetes"), "reactive kubernetes contributor must be present when 'management.health.kubernetes.enabled=true'");