/** * Adds a servlet context. This method should be package scoped. * * @param servletContextImpl * @return */ protected DeploymentDescriptorBuilder addServletContext(final ServletContextImpl servletContextImpl) { servletContextImpl.setAttribute(ServerConfig.class.getName(), serverConfig); servletContextImpls.add(servletContextImpl); return this; } }
/** * Implicit servlet context will be overwritten when running a servlet. * * @return */ private ServletContextImpl getImplicitServletContext() { return new ServletContextImpl(DEFAULT_SERVLET_CONTEXT_PATH, Collections.<ServletMapping>emptyList(), Collections.<FilterMapping>emptyList(), Collections.<String, Object>emptyMap(), null, null ); }
/** * {@inheritDoc} */ @Override public HttpSession getSession(final boolean create) { getSessionInstance(); if (session == null && create) { session = servletContext.createNewSession(); } if (session != null) { session.setLastAccessedTime(System.currentTimeMillis()); } return session; }
@Before public void setUp() { ServerConfig serverConfig = mock(ServerConfig.class); sessionStorage = mock(SessionStorage.class); servletContext = new ServletContextImpl("/", Collections.<ServletMapping>emptyList(), Collections.<FilterMapping>emptyList(), Collections.<String, Object>emptyMap(), serverConfig, sessionStorage ); servletContext.setAttribute("attribute", "value"); response = new HttpServletResponseImpl(mock( Serializer.class), mock(Serializer.class), mock(StreamHelper.class), mock(OutputStream.class)); }
@Test public void shouldReturnEnumerationOfAttributeNames() { assertThat(Collections.list(servletContext.getAttributeNames()).size(), Matchers.is(1)); assertThat((String) Collections.list(servletContext.getAttributeNames()).get(0), Matchers.is("attribute")); servletContext.setAttribute("attribute", null); assertThat(Collections.list(servletContext.getAttributeNames()).size(), Matchers.is(0)); } }
@Test public void shouldGraduallyRemoveAttributeByOverwritingByNull() { assertThat((String) servletContext.getAttribute("attribute"), Matchers.is("value")); servletContext.setAttribute("attribute", null); assertThat(servletContext.getAttribute("attribute"), Matchers.is(Matchers.nullValue())); }
@Before public void setUp() throws ServletException, ServletInitializationException { servletContainer = mock(ServletContainer.class); when(servletContainer.getServletForClass(any(Class.class), any(ServletConfig.class))). thenReturn(mock(Servlet.class)); servletContext = mock(ServletContextImpl.class); when(servletContext.getContextPath()).thenReturn("/"); ServletMapping servletMapping = new ServletMappingImpl(Pattern.compile("^.*$"), SampleServlet.class); when(servletContext.getServletMappings()).thenReturn(Arrays.asList(servletMapping)); when(servletContext.getFilterMappings()).thenReturn(Collections.<FilterMapping>emptyList()); servletResourceProvider = new ServletResourceProvider( servletContainer, Arrays.asList(servletContext) ); response = new HttpServletResponseImpl(mock( Serializer.class), mock(Serializer.class), mock(StreamHelper.class), mock(OutputStream.class)); request = mock(HttpServletRequestImpl.class); when(request.getServletContext()).thenReturn(servletContext); }
private HttpSession getSessionInstance() { if (!sessionWasRequested) { sessionWasRequested = true; String sessionId = getRequestedSessionId(); if (sessionId != null) { session = servletContext.getSession(sessionId); } } return session; }
@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)); }
/** * {@inheritDoc} */ @Override public String getContextPath() { return servletContext.getContextPath(); }
@Test public void shouldReturnFilteredFiltersWithExclude() { List<FilterMapping> filterMappings = new ArrayList<>(); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/secured/.*$"), null, FakeFilter.class)); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/secured/abc.*$"), Pattern.compile("^/secured/abc/exclude.*$"), FakeFilter.class)); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/demo/.*$"), null, FakeFilter.class)); when(servletContext.getFilterMappings()).thenReturn(filterMappings); assertThat(servletContextHelper.getFilterMappingsForPath(servletContext, "/context/secured/abc/excluded"), hasSize(1)); }
@Test public void shouldReturnSessionForValidSID() throws IOException { HttpSessionImpl session = new HttpSessionImpl("123", System.currentTimeMillis()); when(sessionStorage.getSession("123")).thenReturn(session); HttpSessionImpl sessionRead = servletContext.getSession("123"); assertThat(sessionRead, is(not(nullValue()))); assertThat(sessionRead.getServletContext(), is((ServletContext) servletContext)); }
@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)); }
/** * Resolves servlet context for a given path. A null is returned when no context is found for given path. * * @param servletContexts * @param path * @return */ //@Nullable public ServletContextImpl getResolvedContext(final List<ServletContextImpl> servletContexts, final String path) { for (ServletContextImpl servletContext : servletContexts) { if (path.startsWith(servletContext.getContextPath())) { return servletContext; } } return null; }
@Test public void shouldReturnFilteredFilters() { List<FilterMapping> filterMappings = new ArrayList<>(); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/secured/.*$"), null, FakeFilter.class)); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/secured/abc.*$"), null, FakeFilter.class)); filterMappings.add(new FilterMappingImpl(Pattern.compile("^/demo/.*$"), null, FakeFilter.class)); when(servletContext.getFilterMappings()).thenReturn(filterMappings); assertThat(servletContextHelper.getFilterMappingsForPath(servletContext, "/context/secured/abc"), hasSize(2)); }
@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))); }
@Test public void shouldSetCookieAndPersistForValidSession() throws IOException { HttpSessionImpl session = new HttpSessionImpl("123", System.currentTimeMillis()); servletContext.handleSession(session, response); verify(sessionStorage, times(1)).persistSession(session); assertThat(response.getCookies().size(), is(greaterThan(0))); for (Cookie cookie : response.getCookies()) { if (cookie.getName().equals(HttpSessionImpl.COOKIE_NAME)) { assertThat(cookie.getValue(), is(not(nullValue()))); return; } } fail("Session cookie was not set."); }
private List<ServletContextImpl> getServletContexts(final ServerConfig serverConfig) { DeploymentDescriptorBuilder deploymentDescriptorBuilder = getDeploymentDescriptorBuilder(new FileSessionStorage(serverConfig.getTempPath()), serverConfig); List<ServletContextImpl> servletContexts = deploymentDescriptorBuilder.build(); for (ServletContextImpl servletContextImpl : servletContexts) { for (Map.Entry<String, Object> entry : getAdditionalServletContextAttributes().entrySet()) { servletContextImpl.setAttribute(entry.getKey(), entry.getValue()); } } return servletContexts; }
@Before public void setUp() { servletContext = mock(ServletContextImpl.class); when(servletContext.getContextPath()).thenReturn("/context"); }
@Test public void shouldCreateSessionWithCorrectContext() { HttpSessionImpl session = servletContext.createNewSession(); assertThat(session, is(not(nullValue()))); assertThat(session.getServletContext(), is((ServletContext) servletContext)); }