Files
baiyue-firstleg/audit-service/src/test/java/com/baiyue/audit/AuditHealthEndpointTest.java
T

52 lines
3.0 KiB
Java

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()));
}
}