コード例 #1
0
  @Test
  public void testDoFilterGzipResponseCompression() throws Exception {
    MockHttpServletRequest request =
        new MockHttpServletRequest(HttpMethod.POST.name(), "http://localhost:8080/gzip");
    request.addHeader(HttpHeaders.ACCEPT_ENCODING, "gzip");

    MockHttpServletResponse response = new MockHttpServletResponse();
    MockFilterChain filterChain =
        new MockFilterChain(
            servlet,
            new GzipServletFilter(),
            new OncePerRequestFilter() {
              @Override
              protected void doFilterInternal(
                  HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
                  throws ServletException, IOException {
                response.getOutputStream().write("Should be compressed".getBytes());
              }
            });
    filterChain.doFilter(request, response);

    ByteArrayOutputStream unzippedStream = new ByteArrayOutputStream();
    StreamUtils.copy(
        new GZIPInputStream(new ByteArrayInputStream(response.getContentAsByteArray())),
        unzippedStream);
    String unzipped = new String(unzippedStream.toByteArray());

    Assert.assertEquals(unzipped, "Should be compressed");
  }
コード例 #2
0
 @Test
 public void servletWriterCommittedOnWriterFlush() throws IOException {
   assertFalse(response.isCommitted());
   response.getWriter().write("X");
   assertFalse(response.isCommitted());
   response.getWriter().flush();
   assertTrue(response.isCommitted());
   assertEquals(1, response.getContentAsByteArray().length);
 }
コード例 #3
0
 @Test
 public void servletOutputStreamCommittedOnOutputStreamFlush() throws IOException {
   assertFalse(response.isCommitted());
   response.getOutputStream().write('X');
   assertFalse(response.isCommitted());
   response.getOutputStream().flush();
   assertTrue(response.isCommitted());
   assertEquals(1, response.getContentAsByteArray().length);
 }
コード例 #4
0
 @Test
 public void servletOutputStreamCommittedWhenBufferSizeExceeded() throws IOException {
   assertFalse(response.isCommitted());
   response.getOutputStream().write('X');
   assertFalse(response.isCommitted());
   int size = response.getBufferSize();
   response.getOutputStream().write(new byte[size]);
   assertTrue(response.isCommitted());
   assertEquals(size + 1, response.getContentAsByteArray().length);
 }
コード例 #5
0
 @Test
 public void servletWriterCommittedWhenBufferSizeExceeded() throws IOException {
   assertFalse(response.isCommitted());
   response.getWriter().write("X");
   assertFalse(response.isCommitted());
   int size = response.getBufferSize();
   char[] data = new char[size];
   Arrays.fill(data, 'p');
   response.getWriter().write(data);
   assertTrue(response.isCommitted());
   assertEquals(size + 1, response.getContentAsByteArray().length);
 }
コード例 #6
0
  @Test
  public void testDoFilterNoCompression() throws Exception {
    MockHttpServletRequest request =
        new MockHttpServletRequest(HttpMethod.POST.name(), "http://localhost:8080/gzip");

    MockHttpServletResponse response = new MockHttpServletResponse();
    MockFilterChain filterChain =
        new MockFilterChain(
            servlet,
            new GzipServletFilter(),
            new OncePerRequestFilter() {
              @Override
              protected void doFilterInternal(
                  HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
                  throws ServletException, IOException {
                response.getOutputStream().write("Should be compressed".getBytes());
              }
            });
    filterChain.doFilter(request, response);

    String unzipped = new String(response.getContentAsByteArray());
    Assert.assertEquals(unzipped, "Should be compressed");
  }