mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-23 01:39:02 +00:00
If spring-hateoas is on the classpath and an MvcEndpoint returns a @ResponseBody it will be extended and wrapped into a Resource with links. All the existing endpoints that return sensible JSON data can be extended this way (i.e. not /logfile). The HAL browser will also be added as an endpoint if available on the classpath. Finally, asciidocs for the Actuator endpoints are available as a separate jar file, which if included in an app will also generate a new (HTTP) endpoint. Fixes gh-1390
62 lines
2.1 KiB
Java
62 lines
2.1 KiB
Java
package demo;
|
|
|
|
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;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.test.SpringApplicationConfiguration;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.test.context.TestPropertySource;
|
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|
import org.springframework.test.context.web.WebAppConfiguration;
|
|
import org.springframework.test.web.servlet.MockMvc;
|
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
import org.springframework.web.context.WebApplicationContext;
|
|
|
|
@RunWith(SpringJUnit4ClassRunner.class)
|
|
@SpringApplicationConfiguration(classes = SpringBootHypermediaApplication.class)
|
|
@WebAppConfiguration
|
|
@TestPropertySource(properties="endpoints.health.sensitive: false")
|
|
public class SpringBootHypermediaApplicationTests {
|
|
|
|
@Autowired
|
|
private WebApplicationContext context;
|
|
|
|
private MockMvc mockMvc;
|
|
|
|
@Before
|
|
public void setUp() {
|
|
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build();
|
|
}
|
|
|
|
@Test
|
|
public void health() throws Exception {
|
|
this.mockMvc
|
|
.perform(get("/health").accept(MediaType.APPLICATION_JSON))
|
|
.andExpect(status().isOk())
|
|
.andExpect(jsonPath("$.links[0].href").value("http://localhost/health"))
|
|
.andExpect(jsonPath("$.content.status").exists());
|
|
}
|
|
|
|
@Test
|
|
public void trace() throws Exception {
|
|
this.mockMvc
|
|
.perform(get("/trace").accept(MediaType.APPLICATION_JSON))
|
|
.andExpect(status().isOk())
|
|
.andExpect(jsonPath("$.links[0].href").value("http://localhost/trace"))
|
|
.andExpect(jsonPath("$.content").isArray());
|
|
}
|
|
|
|
@Test
|
|
public void envValue() throws Exception {
|
|
this.mockMvc.perform(get("/env/user.home").accept(MediaType.APPLICATION_JSON))
|
|
.andExpect(status().isOk())
|
|
.andExpect(jsonPath("$._links").doesNotExist());
|
|
}
|
|
|
|
}
|