Package org.geoserver.filters

Source Code of org.geoserver.filters.GZipFilterTest

package org.geoserver.filters;

import static org.junit.Assert.*;

import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.zip.GZIPOutputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.junit.Test;

import com.mockrunner.mock.web.MockFilterChain;
import com.mockrunner.mock.web.MockFilterConfig;
import com.mockrunner.mock.web.MockHttpServletRequest;
import com.mockrunner.mock.web.MockHttpServletResponse;
import com.mockrunner.mock.web.MockServletContext;
import com.mockrunner.mock.web.MockServletOutputStream;

public class GZipFilterTest {

   
    @Test
    public void testRetrieveSameOutputStream() throws Exception {
        MockHttpServletRequest request = new MockHttpServletRequest();
        request.setRequestURL("http://www.geoserver.org");
        request.setHeader("accept-encoding", "gzip");
        MockHttpServletResponse response = new MockHttpServletResponse();
        response.setContentType("text/plain");

        // run the filter
        GZIPFilter filter = new GZIPFilter();
        MockFilterConfig config = new MockFilterConfig();
        MockServletContext context = new MockServletContext();
        context.setInitParameter("compressed-types", "text/plain");
        config.setupServletContext(context);
        filter.init(config);

        MockFilterChain chain = new MockFilterChain() {
            @Override
            public void doFilter(ServletRequest request, ServletResponse response) throws IOException,
                    ServletException {
                AlternativesResponseStream alternatives = (AlternativesResponseStream) response
                        .getOutputStream();
                GZIPResponseStream gzipStream = (GZIPResponseStream) alternatives.getStream();
                GZIPOutputStream os = gzipStream.gzipstream;

                try {
                    Field f = FilterOutputStream.class.getDeclaredField("out");
                    f.setAccessible(true);
                    OutputStream wrapped = (OutputStream) f.get(os);
                    // System.out.println(wrapped);
                    // we are not memory bound
                    assertTrue(wrapped instanceof MockServletOutputStream);
                } catch (Exception e) {
                    // it can happen
                    System.out
                            .println("Failed to retrieve original stream wrapped by the GZIPOutputStream");
                    e.printStackTrace();
                }
            }
        };
        filter.doFilter(request, response, chain);
    }
}
TOP

Related Classes of org.geoserver.filters.GZipFilterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.