ContentCachingResponseWrapper defensively applies content length in case of sendError/sendRedirect
Issue: SPR-13004
This commit is contained in:
@@ -150,6 +150,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
final byte[] responseBody = "Hello World".getBytes("UTF-8");
|
||||
FilterChain filterChain = (filterRequest, filterResponse) -> {
|
||||
assertEquals("Invalid request passed", request, filterRequest);
|
||||
response.setContentLength(100);
|
||||
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream());
|
||||
((HttpServletResponse) filterResponse).sendError(HttpServletResponse.SC_FORBIDDEN);
|
||||
};
|
||||
@@ -157,7 +158,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
|
||||
assertEquals("Invalid status", 403, response.getStatus());
|
||||
assertNull("Invalid ETag header", response.getHeader("ETag"));
|
||||
assertTrue("Invalid Content-Length header", response.getContentLength() > 0);
|
||||
assertEquals("Invalid Content-Length header", 100, response.getContentLength());
|
||||
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray());
|
||||
}
|
||||
|
||||
@@ -169,6 +170,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
final byte[] responseBody = "Hello World".getBytes("UTF-8");
|
||||
FilterChain filterChain = (filterRequest, filterResponse) -> {
|
||||
assertEquals("Invalid request passed", request, filterRequest);
|
||||
response.setContentLength(100);
|
||||
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream());
|
||||
((HttpServletResponse) filterResponse).sendError(HttpServletResponse.SC_FORBIDDEN, "ERROR");
|
||||
};
|
||||
@@ -176,7 +178,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
|
||||
assertEquals("Invalid status", 403, response.getStatus());
|
||||
assertNull("Invalid ETag header", response.getHeader("ETag"));
|
||||
assertTrue("Invalid Content-Length header", response.getContentLength() > 0);
|
||||
assertEquals("Invalid Content-Length header", 100, response.getContentLength());
|
||||
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray());
|
||||
assertEquals("Invalid error message", "ERROR", response.getErrorMessage());
|
||||
}
|
||||
@@ -189,6 +191,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
final byte[] responseBody = "Hello World".getBytes("UTF-8");
|
||||
FilterChain filterChain = (filterRequest, filterResponse) -> {
|
||||
assertEquals("Invalid request passed", request, filterRequest);
|
||||
response.setContentLength(100);
|
||||
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream());
|
||||
((HttpServletResponse) filterResponse).sendRedirect("http://www.google.com");
|
||||
};
|
||||
@@ -196,7 +199,7 @@ public class ShallowEtagHeaderFilterTests {
|
||||
|
||||
assertEquals("Invalid status", 302, response.getStatus());
|
||||
assertNull("Invalid ETag header", response.getHeader("ETag"));
|
||||
assertTrue("Invalid Content-Length header", response.getContentLength() > 0);
|
||||
assertEquals("Invalid Content-Length header", 100, response.getContentLength());
|
||||
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray());
|
||||
assertEquals("Invalid redirect URL", "http://www.google.com", response.getRedirectedUrl());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user