/** * Returns cache control max age from HttpServletResponseRecorder */ private int getCacheControlMaxAge(HttpServletResponseRecorder recorder) { String cacheControl = recorder.getHeader("Cache-Control"); assertTrue(cacheControl != null); String cacheValue = cacheControl.substring(cacheControl.indexOf('=') + 1); return Integer.decode(cacheValue); }
@Override public void setDateHeader(String name, long date) { addDateHeader(name, date); }
@Override public void setHeader(String name, String value) { addHeader(name, value); }
@Test public void testCopyResponseToServlet() throws Exception { HttpResponse response = new HttpResponseBuilder() .setResponseString("response string").setHttpStatusCode(200).addHeader("h1", "v1") .addHeader("h2", "v2").setCacheTtl(1000).create(); HttpServletResponse servletResponse = EasyMock.createMock(HttpServletResponse.class); HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(servletResponse); ServletUtil.copyResponseToServlet(response, recorder); assertEquals(200, recorder.getHttpStatusCode()); assertEquals("response string", recorder.getResponseAsString()); assertEquals("v1", recorder.getHeader("h1")); assertEquals("v2", recorder.getHeader("h2")); }
@Test public void normalResponse() throws Exception { servlet.setRenderer(renderer); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_OK, recorder.getHttpStatusCode()); assertEquals("private,max-age=" + GadgetRenderingServlet.DEFAULT_CACHE_TTL, recorder.getHeader("Cache-Control")); assertEquals("working", recorder.getResponseAsString()); }
@Test public void testBadJsonVarConcat() throws Exception { expectRequestWithUris(Lists.<Uri>newArrayList(), "bad code;"); servlet.doGet(request, recorder); verify(); String results = "/* ---- Error 400, Bad json variable name bad code; ---- */\r\n"; assertEquals(results, recorder.getResponseAsString()); assertEquals(400, recorder.getHttpStatusCode()); }
@Test public void outputEncodingIsUtf8() throws Exception { servlet.setRenderer(renderer); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok(NON_ASCII_STRING)); control.replay(); servlet.doGet(request, recorder); assertEquals("UTF-8", recorder.getCharacterEncoding()); assertEquals("text/html", recorder.getContentType()); assertEquals(NON_ASCII_STRING, recorder.getResponseAsString()); }
@Override public void setStatus(int httpStatusCode, String msg) { try { getWriter().write(msg); this.httpStatusCode = httpStatusCode; } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }
@Test public void testServlet() throws Exception { OAuthCallbackServlet servlet = new OAuthCallbackServlet(); replay(); servlet.doGet(this.request, this.recorder); verify(); assertEquals("text/html; charset=UTF-8", this.recorder.getContentType()); String body = this.recorder.getResponseAsString(); Assert.assertNotSame("body is " + body, body.indexOf("window.close()"), -1); }
@Before public void setup() { request = mock(HttpServletRequest.class); response = mock(HttpServletResponse.class); recorder = new HttpServletResponseRecorder(response); chain = mock(FilterChain.class); filter = new AuthenticationServletFilter(); nullStHandler = new NullSecurityTokenAuthenticationHandler(); }
@Test public void dosHeaderRejected() throws Exception { expect(request.getHeader(HttpRequest.DOS_PREVENTION_HEADER)).andReturn("foo"); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_FORBIDDEN, recorder.getHttpStatusCode()); }
@Test public void testCopyToServletResponse() throws Exception { HttpResponse response = new HttpResponseBuilder() .setResponseString("response string").setHttpStatusCode(200).addHeader("h1", "v1") .addHeader("h2", "v2").addHeader("Cache-Control", "private,no-store,max-age=10") .addHeader("Expires", "123").create(); HttpServletResponse servletResponse = EasyMock.createMock(HttpServletResponse.class); HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(servletResponse); ServletUtil.copyToServletResponse(response, recorder); assertEquals(200, recorder.getHttpStatusCode()); assertEquals("response string", recorder.getResponseAsString()); assertEquals("v1", recorder.getHeader("h1")); assertEquals("v2", recorder.getHeader("h2")); assertEquals("private,no-store,max-age=10", recorder.getHeader("Cache-Control")); assertEquals("123", recorder.getHeader("Expires")); }
@Test public void normalResponse() throws Exception { servlet.setRenderer(renderer); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_OK, recorder.getHttpStatusCode()); assertEquals("private,max-age=" + GadgetRenderingServlet.DEFAULT_CACHE_TTL, recorder.getHeader("Cache-Control")); assertEquals("working", recorder.getResponseAsString()); }
@Test public void testBadJsonVarConcat() throws Exception { expectRequestWithUris(Lists.<Uri>newArrayList(), "bad code;"); servlet.doGet(request, recorder); verify(); String results = "/* ---- Error 400, Bad json variable name bad code; ---- */\r\n"; assertEquals(results, recorder.getResponseAsString()); assertEquals(400, recorder.getHttpStatusCode()); }
@Test public void outputEncodingIsUtf8() throws Exception { servlet.setRenderer(renderer); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok(NON_ASCII_STRING)); control.replay(); servlet.doGet(request, recorder); assertEquals("UTF-8", recorder.getCharacterEncoding()); assertEquals("text/html", recorder.getContentType()); assertEquals(NON_ASCII_STRING, recorder.getResponseAsString()); }
@Override public void sendError(int httpStatusCode, String msg) { try { getWriter().write(msg); this.httpStatusCode = httpStatusCode; } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }
@Test public void testServlet() throws Exception { OAuthCallbackServlet servlet = new OAuthCallbackServlet(); replay(); servlet.doGet(this.request, this.recorder); verify(); assertEquals("text/html; charset=UTF-8", this.recorder.getContentType()); String body = this.recorder.getResponseAsString(); Assert.assertNotSame("body is " + body, body.indexOf("window.close()"), -1); }
@Before public void setup() { request = mock(HttpServletRequest.class); response = mock(HttpServletResponse.class); recorder = new HttpServletResponseRecorder(response); chain = mock(FilterChain.class); filter = new AuthenticationServletFilter(); nullStHandler = new NullSecurityTokenAuthenticationHandler(); }