Browse Source

Merge pull request #21702 from Aurdo

* gh-21702:
  Improve tests for BasicErrorController
  Fix BasicErrorController include parameter parsing

Closes gh-21702
pull/21793/head
Scott Frederick 6 years ago
parent
commit
97ff3a8782
  1. 2
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/error/BasicErrorController.java
  2. 85
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/error/BasicErrorControllerIntegrationTests.java

2
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/error/BasicErrorController.java

@ -172,7 +172,7 @@ public class BasicErrorController extends AbstractErrorController { @@ -172,7 +172,7 @@ public class BasicErrorController extends AbstractErrorController {
* @return if the errors attribute should be included
*/
protected boolean isIncludeBindingErrors(HttpServletRequest request, MediaType produces) {
switch (getErrorProperties().getIncludeMessage()) {
switch (getErrorProperties().getIncludeBindingErrors()) {
case ALWAYS:
return true;
case ON_PARAM:

85
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/error/BasicErrorControllerIntegrationTests.java

@ -205,50 +205,89 @@ class BasicErrorControllerIntegrationTests { @@ -205,50 +205,89 @@ class BasicErrorControllerIntegrationTests {
}
@Test
void testBindingExceptionForMachineClientWithMessageAndErrorsParamTrue() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param",
"--server.error.include-binding-errors=on-param");
bindingExceptionWithMessageAndErrors("?message=true&errors=true");
void testBindingExceptionForMachineClientWithErrorsParamTrue() {
load("--server.error.include-exception=true", "--server.error.include-binding-errors=on-param");
bindingExceptionWithErrors("?errors=true");
}
@Test
void testBindingExceptionForMachineClientWithMessageAndErrorsParamFalse() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param",
"--server.error.include-binding-errors=on-param");
bindingExceptionWithoutMessageAndErrors("?message=false&errors=false");
void testBindingExceptionForMachineClientWithErrorsParamFalse() {
load("--server.error.include-exception=true", "--server.error.include-binding-errors=on-param");
bindingExceptionWithoutErrors("?errors=false");
}
@Test
void testBindingExceptionForMachineClientWithMessageAndErrorsParamAbsent() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param",
"--server.error.include-binding-errors=on-param");
bindingExceptionWithoutMessageAndErrors("");
void testBindingExceptionForMachineClientWithErrorsParamAbsent() {
load("--server.error.include-exception=true", "--server.error.include-binding-errors=on-param");
bindingExceptionWithoutErrors("");
}
@Test
void testBindingExceptionForMachineClientAlwaysMessageAndErrors() {
load("--server.error.include-exception=true", "--server.error.include-message=always",
"--server.error.include-binding-errors=always");
bindingExceptionWithMessageAndErrors("?message=false&errors=false");
void testBindingExceptionForMachineClientAlwaysErrors() {
load("--server.error.include-exception=true", "--server.error.include-binding-errors=always");
bindingExceptionWithErrors("?errors=false");
}
@Test
void testBindingExceptionForMachineClientNeverMessageAndErrors() {
load("--server.error.include-exception=true", "--server.error.include-message=never",
"--server.error.include-binding-errors=never");
bindingExceptionWithoutMessageAndErrors("?message=true&errors=true");
void testBindingExceptionForMachineClientNeverErrors() {
load("--server.error.include-exception=true", "--server.error.include-binding-errors=never");
bindingExceptionWithoutErrors("?errors=true");
}
@Test
void testBindingExceptionForMachineClientWithMessageParamTrue() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param");
bindingExceptionWithMessage("?message=true");
}
@Test
void testBindingExceptionForMachineClientWithMessageParamFalse() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param");
bindingExceptionWithoutMessage("?message=false");
}
@Test
void testBindingExceptionForMachineClientWithMessageParamAbsent() {
load("--server.error.include-exception=true", "--server.error.include-message=on-param");
bindingExceptionWithoutMessage("");
}
@Test
void testBindingExceptionForMachineClientAlwaysMessage() {
load("--server.error.include-exception=true", "--server.error.include-message=always");
bindingExceptionWithMessage("?message=false");
}
@Test
void testBindingExceptionForMachineClientNeverMessage() {
load("--server.error.include-exception=true", "--server.error.include-message=never");
bindingExceptionWithoutMessage("?message=true");
}
@SuppressWarnings({ "rawtypes" })
private void bindingExceptionWithErrors(String param) {
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(createUrl("/bind" + param), Map.class);
assertErrorAttributes(entity.getBody(), "400", "Bad Request", BindException.class, "", "/bind");
assertThat(entity.getBody().containsKey("errors")).isTrue();
}
@SuppressWarnings({ "rawtypes" })
private void bindingExceptionWithMessageAndErrors(String param) {
private void bindingExceptionWithoutErrors(String param) {
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(createUrl("/bind" + param), Map.class);
assertErrorAttributes(entity.getBody(), "400", "Bad Request", BindException.class, "", "/bind");
assertThat(entity.getBody().containsKey("errors")).isFalse();
}
@SuppressWarnings({ "rawtypes" })
private void bindingExceptionWithMessage(String param) {
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(createUrl("/bind" + param), Map.class);
assertErrorAttributes(entity.getBody(), "400", "Bad Request", BindException.class,
"Validation failed for object='test'. Error count: 1", "/bind");
assertThat(entity.getBody().containsKey("errors")).isTrue();
assertThat(entity.getBody().containsKey("errors")).isFalse();
}
@SuppressWarnings({ "rawtypes" })
private void bindingExceptionWithoutMessageAndErrors(String param) {
private void bindingExceptionWithoutMessage(String param) {
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(createUrl("/bind" + param), Map.class);
assertErrorAttributes(entity.getBody(), "400", "Bad Request", BindException.class, "", "/bind");
assertThat(entity.getBody().containsKey("errors")).isFalse();

Loading…
Cancel
Save