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