private boolean setSpecialHeader(String name, Object value) { if (HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(name)) { setContentType(value.toString()); return true; } else if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) { setContentLength(value instanceof Number ? ((Number) value).intValue() : Integer.parseInt(value.toString())); return true; } else if (HttpHeaders.CONTENT_LANGUAGE.equalsIgnoreCase(name)) { HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_LANGUAGE, value.toString()); Locale language = headers.getContentLanguage(); setLocale(language != null ? language : Locale.getDefault()); return true; } else if (HttpHeaders.SET_COOKIE.equalsIgnoreCase(name)) { MockCookie cookie = MockCookie.parse(value.toString()); addCookie(cookie); return true; } else { return false; } }
this.response.setContentType("text/plain"); this.response.getWriter().print("content"); this.response.setForwardedUrl("redirectFoo");
@Test public void setContentType() { String contentType = "test/plain"; response.setContentType(contentType); assertEquals(contentType, response.getContentType()); assertEquals(contentType, response.getHeader("Content-Type")); assertEquals(WebUtils.DEFAULT_CHARACTER_ENCODING, response.getCharacterEncoding()); }
@Test public void setContentTypeUTF8() { String contentType = "test/plain;charset=UTF-8"; response.setContentType(contentType); assertEquals("UTF-8", response.getCharacterEncoding()); assertEquals(contentType, response.getContentType()); assertEquals(contentType, response.getHeader("Content-Type")); }
@Test public void setCharacterEncodingThenContentType() { response.setCharacterEncoding("UTF-8"); response.setContentType("test/plain"); assertEquals("test/plain", response.getContentType()); assertEquals("test/plain;charset=UTF-8", response.getHeader("Content-Type")); assertEquals("UTF-8", response.getCharacterEncoding()); }
@Test public void setContentTypeThenCharacterEncoding() { response.setContentType("test/plain"); response.setCharacterEncoding("UTF-8"); assertEquals("test/plain", response.getContentType()); assertEquals("test/plain;charset=UTF-8", response.getHeader("Content-Type")); assertEquals("UTF-8", response.getCharacterEncoding()); }
@Test public void testRetrieveSameOutputStream() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest("GET", "http://www.geoserver.org"); request.addHeader("accept-encoding", "gzip"); MockHttpServletResponse response = new MockHttpServletResponse(); response.setContentType("text/plain"); // run the filter GZIPFilter filter = new GZIPFilter(); MockServletContext context = new MockServletContext(); MockFilterConfig config = new MockFilterConfig(context); config.addInitParameter("compressed-types", "text/plain"); 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(); assertThat( gzipStream.delegateStream, CoreMatchers.instanceOf(DelegatingServletOutputStream.class)); } }; filter.doFilter(request, response, chain); }
@Test public void testGZipRemovesContentLength() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest("GET", "http://www.geoserver.org"); request.addHeader("accept-encoding", "gzip"); MockHttpServletResponse response = new MockHttpServletResponse(); response.setContentType("text/plain"); // run the filter GZIPFilter filter = new GZIPFilter(); MockServletContext context = new MockServletContext(); MockFilterConfig config = new MockFilterConfig(context); config.addInitParameter("compressed-types", "text/plain"); filter.init(config); MockFilterChain chain = new MockFilterChain() { @Override public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { response.setContentLength(1000); AlternativesResponseStream alternatives = (AlternativesResponseStream) response.getOutputStream(); ServletOutputStream gzipStream = alternatives.getStream(); gzipStream.write(1); } }; filter.doFilter(request, response, chain); assertFalse(response.containsHeader("Content-Length")); }
request.addHeader("accept-encoding", "gzip"); MockHttpServletResponse response = new MockHttpServletResponse(); response.setContentType("text/plain");
@Test public void testNotGZippedMantainsContentLength() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest("GET", "http://www.geoserver.org"); request.addHeader("accept-encoding", "gzip"); MockHttpServletResponse response = new MockHttpServletResponse(); response.setContentType("text/css"); // run the filter GZIPFilter filter = new GZIPFilter(); MockServletContext context = new MockServletContext(); context.setInitParameter("compressed-types", "text/plain"); MockFilterConfig config = new MockFilterConfig(context); filter.init(config); MockFilterChain chain = new MockFilterChain() { @Override public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { response.setContentLength(1000); AlternativesResponseStream alternatives = (AlternativesResponseStream) response.getOutputStream(); ServletOutputStream gzipStream = alternatives.getStream(); gzipStream.write(1); } }; filter.doFilter(request, response, chain); assertTrue(response.containsHeader("Content-Length")); assertEquals("1000", response.getHeader("Content-Length")); }
private boolean setSpecialHeader(String name, Object value) { if (CONTENT_TYPE_HEADER.equalsIgnoreCase(name)) { setContentType(value.toString()); return true; } else if (CONTENT_LENGTH_HEADER.equalsIgnoreCase(name)) { setContentLength(value instanceof Number ? ((Number) value).intValue() : Integer.parseInt(value.toString())); return true; } else { return false; } }
private boolean setSpecialHeader(String name, Object value) { if (HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(name)) { setContentType(value.toString()); return true; } else if (HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)) { setContentLength(value instanceof Number ? ((Number) value).intValue() : Integer.parseInt(value.toString())); return true; } else if (HttpHeaders.CONTENT_LANGUAGE.equalsIgnoreCase(name)) { HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_LANGUAGE, value.toString()); Locale language = headers.getContentLanguage(); setLocale(language != null ? language : Locale.getDefault()); return true; } else if (HttpHeaders.SET_COOKIE.equalsIgnoreCase(name)) { MockCookie cookie = MockCookie.parse(value.toString()); addCookie(cookie); return true; } else { return false; } }