|
|
|
@ -32,6 +32,11 @@ import org.springframework.util.FileCopyUtils; |
|
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.*; |
|
|
|
import static org.junit.Assert.*; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @author Arjen Poutsma |
|
|
|
|
|
|
|
* @author Brian Clozel |
|
|
|
|
|
|
|
* @author Juergen Hoeller |
|
|
|
|
|
|
|
*/ |
|
|
|
public class ShallowEtagHeaderFilterTests { |
|
|
|
public class ShallowEtagHeaderFilterTests { |
|
|
|
|
|
|
|
|
|
|
|
private ShallowEtagHeaderFilter filter; |
|
|
|
private ShallowEtagHeaderFilter filter; |
|
|
|
@ -64,7 +69,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
|
|
|
|
|
|
|
|
final byte[] responseBody = "Hello World".getBytes("UTF-8"); |
|
|
|
final byte[] responseBody = "Hello World".getBytes("UTF-8"); |
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
throws IOException, ServletException { |
|
|
|
throws IOException, ServletException { |
|
|
|
@ -73,7 +77,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); |
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 200, response.getStatus()); |
|
|
|
assertEquals("Invalid status", 200, response.getStatus()); |
|
|
|
@ -90,7 +93,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
|
|
|
|
|
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
throws IOException, ServletException { |
|
|
|
throws IOException, ServletException { |
|
|
|
@ -100,7 +102,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
filterResponse.setContentLength(responseBody.length); |
|
|
|
filterResponse.setContentLength(responseBody.length); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 304, response.getStatus()); |
|
|
|
assertEquals("Invalid status", 304, response.getStatus()); |
|
|
|
@ -117,7 +118,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
|
|
|
|
|
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
throws IOException, ServletException { |
|
|
|
throws IOException, ServletException { |
|
|
|
@ -127,7 +127,6 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getWriter()); |
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getWriter()); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 304, response.getStatus()); |
|
|
|
assertEquals("Invalid status", 304, response.getStatus()); |
|
|
|
@ -136,4 +135,75 @@ public class ShallowEtagHeaderFilterTests { |
|
|
|
assertArrayEquals("Invalid content", new byte[0], response.getContentAsByteArray()); |
|
|
|
assertArrayEquals("Invalid content", new byte[0], response.getContentAsByteArray()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
@Test |
|
|
|
|
|
|
|
public void filterSendError() throws Exception { |
|
|
|
|
|
|
|
final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); |
|
|
|
|
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final byte[] responseBody = "Hello World".getBytes("UTF-8"); |
|
|
|
|
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
|
|
|
|
throws IOException, ServletException { |
|
|
|
|
|
|
|
assertEquals("Invalid request passed", request, filterRequest); |
|
|
|
|
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); |
|
|
|
|
|
|
|
((HttpServletResponse) filterResponse).sendError(HttpServletResponse.SC_FORBIDDEN); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 403, response.getStatus()); |
|
|
|
|
|
|
|
assertNull("Invalid ETag header", response.getHeader("ETag")); |
|
|
|
|
|
|
|
assertTrue("Invalid Content-Length header", response.getContentLength() > 0); |
|
|
|
|
|
|
|
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void filterSendErrorMessage() throws Exception { |
|
|
|
|
|
|
|
final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); |
|
|
|
|
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final byte[] responseBody = "Hello World".getBytes("UTF-8"); |
|
|
|
|
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
|
|
|
|
throws IOException, ServletException { |
|
|
|
|
|
|
|
assertEquals("Invalid request passed", request, filterRequest); |
|
|
|
|
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); |
|
|
|
|
|
|
|
((HttpServletResponse) filterResponse).sendError(HttpServletResponse.SC_FORBIDDEN, "ERROR"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 403, response.getStatus()); |
|
|
|
|
|
|
|
assertNull("Invalid ETag header", response.getHeader("ETag")); |
|
|
|
|
|
|
|
assertTrue("Invalid Content-Length header", response.getContentLength() > 0); |
|
|
|
|
|
|
|
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray()); |
|
|
|
|
|
|
|
assertEquals("Invalid error message", "ERROR", response.getErrorMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void filterSendRedirect() throws Exception { |
|
|
|
|
|
|
|
final MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels"); |
|
|
|
|
|
|
|
MockHttpServletResponse response = new MockHttpServletResponse(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final byte[] responseBody = "Hello World".getBytes("UTF-8"); |
|
|
|
|
|
|
|
FilterChain filterChain = new FilterChain() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void doFilter(ServletRequest filterRequest, ServletResponse filterResponse) |
|
|
|
|
|
|
|
throws IOException, ServletException { |
|
|
|
|
|
|
|
assertEquals("Invalid request passed", request, filterRequest); |
|
|
|
|
|
|
|
FileCopyUtils.copy(responseBody, filterResponse.getOutputStream()); |
|
|
|
|
|
|
|
((HttpServletResponse) filterResponse).sendRedirect("http://www.google.com"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
filter.doFilter(request, response, filterChain); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("Invalid status", 302, response.getStatus()); |
|
|
|
|
|
|
|
assertNull("Invalid ETag header", response.getHeader("ETag")); |
|
|
|
|
|
|
|
assertTrue("Invalid Content-Length header", response.getContentLength() > 0); |
|
|
|
|
|
|
|
assertArrayEquals("Invalid content", responseBody, response.getContentAsByteArray()); |
|
|
|
|
|
|
|
assertEquals("Invalid redirect URL", "http://www.google.com", response.getRedirectedUrl()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|