/** * {@inheritDoc} */ @Override public HttpSession getSession() { return getSession(true); }
@Test public void shouldReturnTheSameSessionForConsecutiveCalls() { Map<String, Cookie> cookies = new HashMap<>(); Cookie sessionCookie = new Cookie(HttpSessionImpl.COOKIE_NAME, "sessionId"); cookies.put(HttpSessionImpl.COOKIE_NAME, sessionCookie); httpServletRequestImpl = builder.withCookies(cookies).withServletContext(servletContext).build(); when(servletContext.getSession("sessionId")).thenReturn(new HttpSessionImpl("sessionId", System.currentTimeMillis())); assertThat(httpServletRequestImpl.getSession(), is(instanceOf(HttpSessionImpl.class))); assertThat(httpServletRequestImpl.getSession().equals(httpServletRequestImpl.getSession()), is(true)); }
@Test public void shouldNotHandleSessionOnTerminateIfSessionExists() throws IOException { when(request.getSession(false)).thenReturn(null); servletResourceProvider.load("/", request, response); verify(servletContext, times(0)).handleSession(any(HttpSessionImpl.class), any(HttpServletResponseImpl.class)); }
@Test public void shouldHandleSessionOnTerminateIfSessionExists() throws IOException { when(request.getSession(false)).thenReturn(new HttpSessionImpl("1", System.currentTimeMillis())); servletResourceProvider.load("/", request, response); verify(servletContext, times(1)).handleSession(any(HttpSessionImpl.class), any(HttpServletResponseImpl.class)); }
@Test public void shouldReturnSession() { Map<String, Cookie> cookies = new HashMap<>(); Cookie sessionCookie = new Cookie(HttpSessionImpl.COOKIE_NAME, "sessionId"); cookies.put(HttpSessionImpl.COOKIE_NAME, sessionCookie); httpServletRequestImpl = builder.withCookies(cookies).withServletContext(servletContext).build(); when(servletContext.getSession("sessionId")).thenReturn(new HttpSessionImpl("sessionId", System.currentTimeMillis())); assertThat(httpServletRequestImpl.getSession(), is(instanceOf(HttpSessionImpl.class))); }
assertThat(httpServletRequestImpl.getInputStream(), is(inputStream)); assertThat(httpServletRequestImpl.getProtocol(), is(requestStatus.getProtocol())); assertThat(httpServletRequestImpl.getSession(), is(nullValue())); assertThat(httpServletRequestImpl.isMultipart(), is(true)); assertThat(httpServletRequestImpl.getCookies(), is(Matchers.<Cookie>emptyArray()));
/** * Terminates servlet. Sets all necessary headers, flushes content. * * @param request * @param response * @throws IOException */ private void terminate(final HttpServletRequestImpl request, final HttpServletResponseImpl response) throws IOException { freeUploadedUnprocessedFiles(request.getUploadedFiles()); HttpSessionImpl session = (HttpSessionImpl) request.getSession(false); if (session != null) { try { ((ServletContextImpl) request.getServletContext()).handleSession(session, response); } catch (IOException e) { LOGGER.log(Level.WARNING, "Unable to persist session", e); } } if (!response.isCommitted()) { if (response.getContentType() == null) { response.setContentType(DEFAULT_RESPONSE_CONTENT_TYPE); } response.getHeaders().setHeader(Headers.HEADER_CACHE_CONTROL, HEADER_VALUE_NO_CACHE); response.getHeaders().setHeader(Headers.HEADER_PRAGMA, HEADER_VALUE_NO_CACHE); } response.flush(); }