@ -35,6 +35,7 @@ import org.springframework.mock.web.server.MockServerWebExchange;
@@ -35,6 +35,7 @@ import org.springframework.mock.web.server.MockServerWebExchange;
import org.springframework.validation.BindingResult ;
import org.springframework.validation.MapBindingResult ;
import org.springframework.validation.ObjectError ;
import org.springframework.web.bind.annotation.ResponseStatus ;
import org.springframework.web.bind.support.WebExchangeBindException ;
import org.springframework.web.reactive.function.server.ServerRequest ;
import org.springframework.web.server.ResponseStatusException ;
@ -90,6 +91,29 @@ public class DefaultErrorAttributesTests {
@@ -90,6 +91,29 @@ public class DefaultErrorAttributesTests {
assertThat ( attributes . get ( "status" ) ) . isEqualTo ( 500 ) ;
}
@Test
public void annotatedResponseStatusCode ( ) {
Exception error = new CustomException ( ) ;
MockServerHttpRequest request = MockServerHttpRequest . get ( "/test" ) . build ( ) ;
Map < String , Object > attributes = this . errorAttributes
. getErrorAttributes ( buildServerRequest ( request , error ) , false ) ;
assertThat ( attributes . get ( "error" ) )
. isEqualTo ( HttpStatus . I_AM_A_TEAPOT . getReasonPhrase ( ) ) ;
assertThat ( attributes . get ( "status" ) ) . isEqualTo ( HttpStatus . I_AM_A_TEAPOT . value ( ) ) ;
}
@Test
public void annotatedResponseStatusCodeWithCustomReasonPhrase ( ) {
Exception error = new Custom2Exception ( ) ;
MockServerHttpRequest request = MockServerHttpRequest . get ( "/test" ) . build ( ) ;
Map < String , Object > attributes = this . errorAttributes
. getErrorAttributes ( buildServerRequest ( request , error ) , false ) ;
assertThat ( attributes . get ( "error" ) )
. isEqualTo ( HttpStatus . I_AM_A_TEAPOT . getReasonPhrase ( ) ) ;
assertThat ( attributes . get ( "status" ) ) . isEqualTo ( HttpStatus . I_AM_A_TEAPOT . value ( ) ) ;
assertThat ( attributes . get ( "message" ) ) . isEqualTo ( "Nope!" ) ;
}
@Test
public void includeStatusCode ( ) {
MockServerHttpRequest request = MockServerHttpRequest . get ( "/test" ) . build ( ) ;
@ -214,4 +238,14 @@ public class DefaultErrorAttributesTests {
@@ -214,4 +238,14 @@ public class DefaultErrorAttributesTests {
return 42 ;
}
@ResponseStatus ( HttpStatus . I_AM_A_TEAPOT )
private static class CustomException extends RuntimeException {
}
@ResponseStatus ( value = HttpStatus . I_AM_A_TEAPOT , reason = "Nope!" )
private static class Custom2Exception extends RuntimeException {
}
}