From 564cfa107c6b32990fc9e242d688d9b5f4798fd5 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 7 Oct 2026 11:48:05 +0800 Subject: [PATCH] fix(audit): expose real actuator health status --- audit-service/pom.xml | 4 ++ .../baiyue/audit/AuditHealthEndpointTest.java | 51 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 audit-service/src/test/java/com/baiyue/audit/AuditHealthEndpointTest.java diff --git a/audit-service/pom.xml b/audit-service/pom.xml index aa0b1626c..5f46e7c07 100644 --- a/audit-service/pom.xml +++ b/audit-service/pom.xml @@ -53,6 +53,10 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config + + org.springframework.boot + spring-boot-starter-actuator + org.springframework.boot spring-boot-starter-test diff --git a/audit-service/src/test/java/com/baiyue/audit/AuditHealthEndpointTest.java b/audit-service/src/test/java/com/baiyue/audit/AuditHealthEndpointTest.java new file mode 100644 index 000000000..0229bc708 --- /dev/null +++ b/audit-service/src/test/java/com/baiyue/audit/AuditHealthEndpointTest.java @@ -0,0 +1,51 @@ +package com.baiyue.audit; + +import com.baiyue.common.web.CommonWebAutoConfiguration; +import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration; +import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; +import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +class AuditHealthEndpointTest { + private final WebApplicationContextRunner context = new WebApplicationContextRunner() + .withConfiguration(AutoConfigurations.of( + JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, + WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class, EndpointAutoConfiguration.class, + HealthEndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class, + ManagementContextAutoConfiguration.class, CommonWebAutoConfiguration.class)) + .withPropertyValues("management.endpoints.web.exposure.include=health"); + + @Test + void actuatorHealthReturnsUpInsteadOfBusinessResourceNotFound() { + context.withBean("dependencyHealthIndicator", HealthIndicator.class, () -> () -> Health.up().build()) + .run(application -> MockMvcBuilders.webAppContextSetup(application).build() + .perform(get("/actuator/health")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status").value("UP")) + .andExpect(jsonPath("$.code").doesNotExist())); + } + + @Test + void failedHealthContributorReturnsDownAndServiceUnavailable() { + context.withBean("dependencyHealthIndicator", HealthIndicator.class, () -> () -> Health.down().build()) + .run(application -> MockMvcBuilders.webAppContextSetup(application).build() + .perform(get("/actuator/health")) + .andExpect(status().isServiceUnavailable()) + .andExpect(jsonPath("$.status").value("DOWN")) + .andExpect(jsonPath("$.code").doesNotExist())); + } +} -- 2.54.0