|
|
|
@ -22,6 +22,7 @@ import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.jspecify.annotations.Nullable; |
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.boot.web.error.ErrorAttributeOptions; |
|
|
|
import org.springframework.boot.web.error.ErrorAttributeOptions; |
|
|
|
@ -77,8 +78,8 @@ class DefaultErrorAttributesTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void includeTimeStamp() { |
|
|
|
void includeTimeStamp() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes.get("timestamp")).isInstanceOf(Date.class); |
|
|
|
assertThat(attributes.get("timestamp")).isInstanceOf(Date.class); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -86,8 +87,8 @@ class DefaultErrorAttributesTests { |
|
|
|
void defaultStatusCode() { |
|
|
|
void defaultStatusCode() { |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, error), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, error), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("status", 500); |
|
|
|
assertThat(attributes).containsEntry("status", 500); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -96,8 +97,8 @@ class DefaultErrorAttributesTests { |
|
|
|
void annotatedResponseStatusCode() { |
|
|
|
void annotatedResponseStatusCode() { |
|
|
|
Exception error = new CustomException(); |
|
|
|
Exception error = new CustomException(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, error), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, error), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
assertThat(attributes).containsEntry("status", HttpStatus.EXPECTATION_FAILED.value()); |
|
|
|
assertThat(attributes).containsEntry("status", HttpStatus.EXPECTATION_FAILED.value()); |
|
|
|
@ -107,7 +108,8 @@ class DefaultErrorAttributesTests { |
|
|
|
void annotatedResponseStatusCodeWithExceptionMessage() { |
|
|
|
void annotatedResponseStatusCodeWithExceptionMessage() { |
|
|
|
Exception error = new CustomException("Test Message"); |
|
|
|
Exception error = new CustomException("Test Message"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, error), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
|
|
|
|
buildServerRequest(request, error), |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.STATUS, Include.ERROR)); |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.STATUS, Include.ERROR)); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("message", "Test Message"); |
|
|
|
assertThat(attributes).containsEntry("message", "Test Message"); |
|
|
|
@ -118,7 +120,8 @@ class DefaultErrorAttributesTests { |
|
|
|
void annotatedResponseStatusCodeWithCustomReasonPhrase() { |
|
|
|
void annotatedResponseStatusCodeWithCustomReasonPhrase() { |
|
|
|
Exception error = new Custom2Exception(); |
|
|
|
Exception error = new Custom2Exception(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, error), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
|
|
|
|
buildServerRequest(request, error), |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.STATUS, Include.ERROR)); |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.STATUS, Include.ERROR)); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.EXPECTATION_FAILED.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("status", HttpStatus.EXPECTATION_FAILED.value()); |
|
|
|
assertThat(attributes).containsEntry("status", HttpStatus.EXPECTATION_FAILED.value()); |
|
|
|
@ -128,8 +131,8 @@ class DefaultErrorAttributesTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void includeStatusCode() { |
|
|
|
void includeStatusCode() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.NOT_FOUND.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("error", HttpStatus.NOT_FOUND.getReasonPhrase()); |
|
|
|
assertThat(attributes).containsEntry("status", 404); |
|
|
|
assertThat(attributes).containsEntry("status", 404); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -139,7 +142,7 @@ class DefaultErrorAttributesTests { |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE)); |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE)); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(attributes).doesNotContainKey("exception"); |
|
|
|
assertThat(attributes).doesNotContainKey("exception"); |
|
|
|
@ -151,7 +154,7 @@ class DefaultErrorAttributesTests { |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
Error error = new OutOfMemoryError("Test error"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
@ -163,7 +166,7 @@ class DefaultErrorAttributesTests { |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE)); |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE)); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error); |
|
|
|
assertThat(attributes).containsEntry("exception", RuntimeException.class.getName()); |
|
|
|
assertThat(attributes).containsEntry("exception", RuntimeException.class.getName()); |
|
|
|
@ -177,7 +180,7 @@ class DefaultErrorAttributesTests { |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE, Include.STATUS)); |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE, Include.STATUS)); |
|
|
|
assertThat(attributes).containsEntry("status", 400); |
|
|
|
assertThat(attributes).containsEntry("status", 400); |
|
|
|
assertThat(attributes).containsEntry("message", "invalid request"); |
|
|
|
assertThat(attributes).containsEntry("message", "invalid request"); |
|
|
|
@ -192,7 +195,7 @@ class DefaultErrorAttributesTests { |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE, Include.STATUS)); |
|
|
|
ErrorAttributeOptions.of(Include.EXCEPTION, Include.MESSAGE, Include.STATUS)); |
|
|
|
assertThat(attributes).containsEntry("status", 406); |
|
|
|
assertThat(attributes).containsEntry("status", 406); |
|
|
|
assertThat(attributes).containsEntry("message", "could not process request"); |
|
|
|
assertThat(attributes).containsEntry("message", "could not process request"); |
|
|
|
@ -204,8 +207,8 @@ class DefaultErrorAttributesTests { |
|
|
|
void notIncludeTrace() { |
|
|
|
void notIncludeTrace() { |
|
|
|
RuntimeException ex = new RuntimeException("Test"); |
|
|
|
RuntimeException ex = new RuntimeException("Test"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, ex), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).doesNotContainKey("trace"); |
|
|
|
assertThat(attributes).doesNotContainKey("trace"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -213,40 +216,42 @@ class DefaultErrorAttributesTests { |
|
|
|
void includeTrace() { |
|
|
|
void includeTrace() { |
|
|
|
RuntimeException ex = new RuntimeException("Test"); |
|
|
|
RuntimeException ex = new RuntimeException("Test"); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.of(Include.STACK_TRACE)); |
|
|
|
.getErrorAttributes(buildServerRequest(request, ex), ErrorAttributeOptions.of(Include.STACK_TRACE)); |
|
|
|
assertThat(attributes.get("trace").toString()).startsWith("java.lang"); |
|
|
|
Object trace = attributes.get("trace"); |
|
|
|
|
|
|
|
assertThat(trace).isNotNull(); |
|
|
|
|
|
|
|
assertThat(trace.toString()).startsWith("java.lang"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void includePathByDefault() { |
|
|
|
void includePathByDefault() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).containsEntry("path", "/test"); |
|
|
|
assertThat(attributes).containsEntry("path", "/test"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void includePath() { |
|
|
|
void includePath() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.of(Include.PATH)); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.of(Include.PATH)); |
|
|
|
assertThat(attributes).containsEntry("path", "/test"); |
|
|
|
assertThat(attributes).containsEntry("path", "/test"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void pathShouldIncludeContext() { |
|
|
|
void pathShouldIncludeContext() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/context/test").contextPath("/context").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/context/test").contextPath("/context").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.of(Include.PATH)); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.of(Include.PATH)); |
|
|
|
assertThat(attributes).containsEntry("path", "/context/test"); |
|
|
|
assertThat(attributes).containsEntry("path", "/context/test"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void excludePath() { |
|
|
|
void excludePath() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, NOT_FOUND), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.of()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, NOT_FOUND), ErrorAttributeOptions.of()); |
|
|
|
assertThat(attributes).doesNotContainEntry("path", "/test"); |
|
|
|
assertThat(attributes).doesNotContainEntry("path", "/test"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -254,7 +259,7 @@ class DefaultErrorAttributesTests { |
|
|
|
void includeLogPrefix() { |
|
|
|
void includeLogPrefix() { |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, NOT_FOUND); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, NOT_FOUND); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).containsEntry("requestId", serverRequest.exchange().getRequest().getId()); |
|
|
|
assertThat(attributes).containsEntry("requestId", serverRequest.exchange().getRequest().getId()); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -267,8 +272,8 @@ class DefaultErrorAttributesTests { |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
buildServerRequest(request, ex), ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
.startsWith("Validation failed for argument at index 0 in method: " + "int " + getClass().getName() |
|
|
|
.startsWith("Validation failed for argument at index 0 in method: " + "int " + getClass().getName() |
|
|
|
+ ".method(java.lang.String), with 1 error(s)"); |
|
|
|
+ ".method(java.lang.String), with 1 error(s)"); |
|
|
|
@ -284,7 +289,7 @@ class DefaultErrorAttributesTests { |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
buildServerRequest(request, new ResponseStatusException(HttpStatus.BAD_REQUEST, "Invalid", ex)), |
|
|
|
buildServerRequest(request, new ResponseStatusException(HttpStatus.BAD_REQUEST, "Invalid", ex)), |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
assertThat(attributes.get("message")).isEqualTo("Invalid"); |
|
|
|
assertThat(attributes.get("message")).isEqualTo("Invalid"); |
|
|
|
@ -305,8 +310,8 @@ class DefaultErrorAttributesTests { |
|
|
|
}))); |
|
|
|
}))); |
|
|
|
HandlerMethodValidationException ex = new HandlerMethodValidationException(methodValidationResult); |
|
|
|
HandlerMethodValidationException ex = new HandlerMethodValidationException(methodValidationResult); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
buildServerRequest(request, ex), ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
.isEqualTo( |
|
|
|
.isEqualTo( |
|
|
|
"Validation failed for method='public java.lang.String java.lang.String.substring(int)'. Error count: 1"); |
|
|
|
"Validation failed for method='public java.lang.String java.lang.String.substring(int)'. Error count: 1"); |
|
|
|
@ -322,8 +327,8 @@ class DefaultErrorAttributesTests { |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
bindingResult.addError(new ObjectError("c", "d")); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
Exception ex = new WebExchangeBindException(stringParam, bindingResult); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes |
|
|
|
ErrorAttributeOptions.defaults()); |
|
|
|
.getErrorAttributes(buildServerRequest(request, ex), ErrorAttributeOptions.defaults()); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
assertThat(attributes).doesNotContainKey("message"); |
|
|
|
assertThat(attributes).doesNotContainKey("errors"); |
|
|
|
assertThat(attributes).doesNotContainKey("errors"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -342,8 +347,8 @@ class DefaultErrorAttributesTests { |
|
|
|
List.of(parameterValidationResult)); |
|
|
|
List.of(parameterValidationResult)); |
|
|
|
HandlerMethodValidationException ex = new HandlerMethodValidationException(methodValidationResult); |
|
|
|
HandlerMethodValidationException ex = new HandlerMethodValidationException(methodValidationResult); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(buildServerRequest(request, ex), |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes( |
|
|
|
ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
buildServerRequest(request, ex), ErrorAttributeOptions.of(Include.MESSAGE, Include.BINDING_ERRORS)); |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
assertThat(attributes.get("message")).asString() |
|
|
|
.isEqualTo( |
|
|
|
.isEqualTo( |
|
|
|
"Validation failed for method='public java.lang.String java.lang.String.substring(int)'. Error count: 1"); |
|
|
|
"Validation failed for method='public java.lang.String java.lang.String.substring(int)'. Error count: 1"); |
|
|
|
@ -358,7 +363,7 @@ class DefaultErrorAttributesTests { |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.defaults().excluding(Include.STATUS)); |
|
|
|
ErrorAttributeOptions.defaults().excluding(Include.STATUS)); |
|
|
|
assertThat(attributes).doesNotContainKey("status"); |
|
|
|
assertThat(attributes).doesNotContainKey("status"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -370,7 +375,7 @@ class DefaultErrorAttributesTests { |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
this.errorAttributes = new DefaultErrorAttributes(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build(); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
ServerRequest serverRequest = buildServerRequest(request, error); |
|
|
|
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
Map<String, @Nullable Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest, |
|
|
|
ErrorAttributeOptions.defaults().excluding(Include.ERROR)); |
|
|
|
ErrorAttributeOptions.defaults().excluding(Include.ERROR)); |
|
|
|
assertThat(attributes).doesNotContainKey("error"); |
|
|
|
assertThat(attributes).doesNotContainKey("error"); |
|
|
|
} |
|
|
|
} |
|
|
|
|