SPR-5625 - Allow for exceptions to be annotated with a @ResponseStatus annotation
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package org.springframework.web.servlet.mvc.annotation;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
/** @author Arjen Poutsma */
|
||||
public class ResponseStatusExceptionResolverTests {
|
||||
|
||||
private ResponseStatusExceptionResolver exceptionResolver;
|
||||
|
||||
private MockHttpServletRequest request;
|
||||
|
||||
private MockHttpServletResponse response;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
exceptionResolver = new ResponseStatusExceptionResolver();
|
||||
request = new MockHttpServletRequest();
|
||||
response = new MockHttpServletResponse();
|
||||
request.setMethod("GET");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void statusCode() {
|
||||
StatusCodeException ex = new StatusCodeException();
|
||||
ModelAndView mav = exceptionResolver.resolveException(request, response, null, ex);
|
||||
assertNotNull("No ModelAndView returned", mav);
|
||||
assertTrue("No Empty ModelAndView returned", mav.isEmpty());
|
||||
assertEquals("Invalid status code", 400, response.getStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void statusCodeAndReason() {
|
||||
StatusCodeAndReasonException ex = new StatusCodeAndReasonException();
|
||||
ModelAndView mav = exceptionResolver.resolveException(request, response, null, ex);
|
||||
assertNotNull("No ModelAndView returned", mav);
|
||||
assertTrue("No Empty ModelAndView returned", mav.isEmpty());
|
||||
assertEquals("Invalid status code", 410, response.getStatus());
|
||||
assertEquals("Invalid status reason", "You suck!", response.getErrorMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notAnnotated() {
|
||||
Exception ex = new Exception();
|
||||
exceptionResolver.resolveException(request, response, null, ex);
|
||||
ModelAndView mav = exceptionResolver.resolveException(request, response, null, ex);
|
||||
assertNull("ModelAndView returned", mav);
|
||||
}
|
||||
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
private static class StatusCodeException extends Exception {
|
||||
|
||||
}
|
||||
|
||||
@ResponseStatus(value = HttpStatus.GONE, reason = "You suck!")
|
||||
private static class StatusCodeAndReasonException extends Exception {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user