@Test public void testNoChallengeGET() throws IOException, ServletException { SimpleHttpRequest request = new SimpleHttpRequest(); request.setMethod("GET"); SimpleHttpResponse response = new SimpleHttpResponse(); SimpleFilterChain chain = new SimpleFilterChain(); this.filter.doFilter(request, response, chain); // unlike servlet filters, it's a passthrough assertEquals(500, response.getStatus()); }
@Test public void testUnsupportedSecurityPackagePassthrough() throws IOException, ServletException { SimpleFilterChain filterChain = new SimpleFilterChain(); SimpleHttpRequest request = new SimpleHttpRequest(); request.addHeader("Authorization", "Unsupported challenge"); SimpleHttpResponse response = new SimpleHttpResponse(); this.filter.doFilter(request, response, filterChain); // the filter should ignore authorization for an unsupported security package, ie. not return a // 401 assertEquals(500, response.getStatus()); }
@Test public void testGuestIsDisabled() throws IOException, ServletException { String securityPackage = "Negotiate"; SimpleFilterChain filterChain = new SimpleFilterChain(); SimpleHttpRequest request = new SimpleHttpRequest(); String clientToken = BaseEncoding.base64().encode("Guest".getBytes()); request.addHeader("Authorization", securityPackage + " " + clientToken); SimpleHttpResponse response = new SimpleHttpResponse(); this.filter.doFilter(request, response, filterChain); assertEquals(401, response.getStatus()); assertNull(SecurityContextHolder.getContext().getAuthentication()); }
/** * Test challenge get. * * @throws IOException Signals that an I/O exception has occurred. * @throws ServletException the servlet exception */ @Test public void testChallengeGET() throws IOException, ServletException { final SimpleHttpRequest request = new SimpleHttpRequest(); request.setMethod("GET"); final SimpleHttpResponse response = new SimpleHttpResponse(); this.entryPoint.commence(request, response, null); final String[] wwwAuthenticates = response.getHeaderValues("WWW-Authenticate"); Assert.assertEquals(3, wwwAuthenticates.length); Assert.assertEquals("NTLM", wwwAuthenticates[0]); Assert.assertEquals("Negotiate", wwwAuthenticates[1]); Assert.assertTrue(wwwAuthenticates[2].equals("Basic realm=\"TestRealm\"")); Assert.assertEquals(2, response.getHeaderNamesSize()); Assert.assertEquals("keep-alive", response.getHeader("Connection")); Assert.assertEquals(401, response.getStatus()); }
@Test public void testNegotiate() throws IOException, ServletException { String securityPackage = "Negotiate"; SimpleFilterChain filterChain = new SimpleFilterChain(); SimpleHttpRequest request = new SimpleHttpRequest(); String clientToken = BaseEncoding.base64().encode(WindowsAccountImpl.getCurrentUsername().getBytes()); request.addHeader("Authorization", securityPackage + " " + clientToken); SimpleHttpResponse response = new SimpleHttpResponse(); this.filter.doFilter(request, response, filterChain); Authentication auth = SecurityContextHolder.getContext().getAuthentication(); assertNotNull(auth); GrantedAuthority[] authorities = auth.getAuthorities(); assertNotNull(authorities); assertEquals(3, authorities.length); assertEquals("ROLE_USER", authorities[0].getAuthority()); assertEquals("ROLE_USERS", authorities[1].getAuthority()); assertEquals("ROLE_EVERYONE", authorities[2].getAuthority()); assertEquals(0, response.getHeaderNamesSize()); }