SPR-5625 - Allow for exceptions to be annotated with a @ResponseStatus annotation

This commit is contained in:
Arjen Poutsma
2009-03-28 11:19:45 +00:00
parent 3ade31bb51
commit 04b3edca33
4 changed files with 203 additions and 1 deletions

View File

@@ -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 {
}
}