diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java index adae753c679..12a7e8a965e 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java @@ -533,13 +533,17 @@ public class MockHttpServletResponse implements HttpServletResponse { @Override public void setStatus(int status) { - this.status = status; + if(!this.isCommitted()) { + this.status = status; + } } @Override public void setStatus(int status, String errorMessage) { - this.status = status; - this.errorMessage = errorMessage; + if(!this.isCommitted()) { + this.status = status; + this.errorMessage = errorMessage; + } } @Override diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java index 867b86ad90a..904440b4a57 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java @@ -221,4 +221,22 @@ public class MockHttpServletResponseTests { assertEquals(redirectUrl, response.getRedirectedUrl()); } + // SPR-10414 + + @Test + public void modifyStatusAfterSendError() throws IOException { + response.sendError(HttpServletResponse.SC_NOT_FOUND); + response.setStatus(HttpServletResponse.SC_OK); + assertEquals(response.getStatus(),HttpServletResponse.SC_NOT_FOUND); + } + + // SPR-10414 + + @Test + public void modifyStatusMessageAfterSendError() throws IOException { + response.sendError(HttpServletResponse.SC_NOT_FOUND); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Server Error"); + assertEquals(response.getStatus(),HttpServletResponse.SC_NOT_FOUND); + } + }