Commit f39d4978 authored by Dave Syer's avatar Dave Syer

Fix tests for JSON error rendering

See gh-1762
parent 4cd3bf18
......@@ -122,7 +122,7 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
}
}
Object message = getAttribute(requestAttributes, "javax.servlet.error.message");
if (message != null || errorAttributes.get("message") == null) {
if ((message != null || errorAttributes.get("message") == null) && !(error instanceof BindingResult)) {
errorAttributes.put("message", message == null ? "No message available"
: message);
}
......
......@@ -33,6 +33,7 @@ import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
......@@ -41,6 +42,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractView;
......@@ -73,8 +75,21 @@ public class BasicErrorControllerIntegrationTests {
"http://localhost:" + this.port, Map.class);
assertThat(entity.getBody().toString(), endsWith("status=500, "
+ "error=Internal Server Error, "
+ "exception=java.lang.IllegalStateException, " + "message=Expected!, "
+ "path=/}"));
+ "exception=java.lang.IllegalStateException, "
+ "message=Server Error, " + "path=/}"));
}
@Test
@SuppressWarnings("rawtypes")
public void testErrorForAnnotatedException() throws Exception {
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(
"http://localhost:" + this.port + "/annotated", Map.class);
assertThat(
entity.getBody().toString(),
endsWith("status=400, "
+ "error=Bad Request, "
+ "exception=org.springframework.boot.autoconfigure.web.BasicErrorControllerIntegrationTests$TestConfiguration$Errors$ExpectedException, "
+ "message=Expected!, " + "path=/annotated}"));
}
@Test
......@@ -124,6 +139,11 @@ public class BasicErrorControllerIntegrationTests {
throw new IllegalStateException("Expected!");
}
@RequestMapping("/annotated")
public String annotated() {
throw new ExpectedException();
}
@RequestMapping("/bind")
public String bind(HttpServletRequest request) throws Exception {
BindException error = new BindException(this, "test");
......@@ -131,6 +151,12 @@ public class BasicErrorControllerIntegrationTests {
throw error;
}
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Expected!")
@SuppressWarnings("serial")
private static class ExpectedException extends RuntimeException {
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment