@ -90,13 +90,23 @@ class BasicErrorControllerMockMvcTests {
@@ -90,13 +90,23 @@ class BasicErrorControllerMockMvcTests {
}
@Test
void testErrorWithResponseStatus ( ) throws Exception {
void testErrorWithNotFound ResponseStatus ( ) throws Exception {
MvcResult result = this . mockMvc . perform ( get ( "/bang" ) ) . andExpect ( status ( ) . isNotFound ( ) ) . andReturn ( ) ;
MvcResult response = this . mockMvc . perform ( new ErrorDispatcher ( result , "/error" ) ) . andReturn ( ) ;
String content = response . getResponse ( ) . getContentAsString ( ) ;
assertThat ( content ) . contains ( "Expected!" ) ;
}
@Test
void testErrorWithNoContentResponseStatus ( ) throws Exception {
MvcResult result = this . mockMvc . perform ( get ( "/noContent" ) . accept ( "some/thing" ) )
. andExpect ( status ( ) . isNoContent ( ) ) . andReturn ( ) ;
MvcResult response = this . mockMvc . perform ( new ErrorDispatcher ( result , "/error" ) )
. andExpect ( status ( ) . isNoContent ( ) ) . andReturn ( ) ;
String content = response . getResponse ( ) . getContentAsString ( ) ;
assertThat ( content ) . isEmpty ( ) ;
}
@Test
void testBindingExceptionForMachineClient ( ) throws Exception {
// In a real server the response is carried over into the error dispatcher, but
@ -168,6 +178,11 @@ class BasicErrorControllerMockMvcTests {
@@ -168,6 +178,11 @@ class BasicErrorControllerMockMvcTests {
throw error ;
}
@RequestMapping ( "/noContent" )
void noContent ( ) throws Exception {
throw new NoContentException ( "Expected!" ) ;
}
public String getFoo ( ) {
return "foo" ;
}
@ -185,6 +200,15 @@ class BasicErrorControllerMockMvcTests {
@@ -185,6 +200,15 @@ class BasicErrorControllerMockMvcTests {
}
@ResponseStatus ( HttpStatus . NO_CONTENT )
private static class NoContentException extends RuntimeException {
NoContentException ( String string ) {
super ( string ) ;
}
}
private class ErrorDispatcher implements RequestBuilder {
private MvcResult result ;
@ -201,6 +225,7 @@ class BasicErrorControllerMockMvcTests {
@@ -201,6 +225,7 @@ class BasicErrorControllerMockMvcTests {
MockHttpServletRequest request = this . result . getRequest ( ) ;
request . setDispatcherType ( DispatcherType . ERROR ) ;
request . setRequestURI ( this . path ) ;
request . setAttribute ( "javax.servlet.error.status_code" , this . result . getResponse ( ) . getStatus ( ) ) ;
return request ;
}