diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/DirSetupTestCase.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/DirSetupTestCase.java deleted file mode 100644 index 9b5b1755b8..0000000000 --- a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/DirSetupTestCase.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2004, 2005 Acegi Technology Pty Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.acegisecurity.providers.dao.ldap; - -import javax.naming.NamingException; -import javax.naming.directory.Attributes; - -import org.acegisecurity.providers.dao.ldap.support.BaseLdapTestCase; - -/** Tests to ensure the directory server we are running against is - * configured as expected. - * - * @author robert.sanders - */ -public class DirSetupTestCase extends BaseLdapTestCase { - - /** Simply test the connection to the test LDAP server; - * if this test fails we know the server setup needs checked. - * @throws NamingException - */ - public void testConnection() throws NamingException { - Object obj = getClientContext().lookup("ou=users"); - //System.out.println( obj ); - assertNotNull( obj ); - } - - - public void testSimpleUidUser() throws NamingException { - Attributes myAttrs = getClientContext().getAttributes("uid=one.user,ou=users"); - assertEquals(8, myAttrs.size()); - assertEquals("uid=one.user,ou=users,ou=system", myAttrs.get("dn").get() ); - } - - public void testSimpleCnUser() throws NamingException { - Attributes myAttrs = getClientContext().getAttributes("cn=user.two,ou=users"); - assertEquals(8, myAttrs.size()); - assertEquals("cn=user.two,ou=users,ou=system", myAttrs.get("dn").get() ); - assertEquals("Two", myAttrs.get("givenName").get() ); - } - - public void testOthersUsers() throws NamingException { - Attributes myAttrs = getClientContext().getAttributes("uid=other.two,ou=others"); - assertEquals("uid=other.two,ou=others,ou=system", myAttrs.get("dn").get() ); - assertEquals("Other", myAttrs.get("givenName").get() ); - } - -} diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapPasswordAuthenticationDaoTests.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapPasswordAuthenticationDaoTests.java deleted file mode 100644 index 0ced9e97b2..0000000000 --- a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapPasswordAuthenticationDaoTests.java +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright 2004, 2005 Acegi Technology Pty Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.acegisecurity.providers.dao.ldap; - -import org.acegisecurity.BadCredentialsException; -import org.acegisecurity.providers.dao.ldap.support.BaseLdapTestCase; -import org.acegisecurity.userdetails.UserDetails; - -import javax.naming.NamingException; - - -/** - * Set of JUnit tests for the LdapPasswordAuthenticationDao. - * - * @author $author$ - * @version $Revision$ - */ -public class LdapPasswordAuthenticationDaoTests extends BaseLdapTestCase { - - private LdapPasswordAuthenticationDao dao; - private String DEFAULT_ROLE = "DEFAULT_ROLE"; - - public static void main(String[] args) { - LdapPasswordAuthenticationDaoTests ats = new LdapPasswordAuthenticationDaoTests(); - ats.setUp(); - try { - ats.testSimpleUidUser(); - } catch (Throwable t) { - t.printStackTrace(); - } finally { - System.exit(0); - } - } - - - /** Check to see that a user with no roles can not login - * (this is the correct behavior the last time I checked the Acegi Docs). - * - */ - public void testEmptyRoles() { - dao.setUsernameFormat("uid={0},ou=users,ou=system"); - - try { - UserDetails userDetails = dao.loadUserByUsernameAndPassword("user.two", - "plaintext2"); - fail("No roles are accessible for user; this test _should_ fail."); - } catch (BadCredentialsException ex) { - assertTrue("No roles are accessible for user; this test _should_ fail.", - ex.getMessage().startsWith(LdapPasswordAuthenticationDao.BAD_CREDENTIALS_EXCEPTION_MESSAGE)); - } - } - - /** Test that the user who is identified by - * Common Name (cn=..) can be authenticated. */ - public void testSimpleCnUser() throws NamingException { - dao.setUsernameFormat("cn={0},ou=users,ou=system"); - dao.setUserLookupNameFormat("cn={0},ou=users"); - dao.setDefaultRole(DEFAULT_ROLE); - - try { - UserDetails userDetails = dao.loadUserByUsernameAndPassword("User Two", - "plaintext2"); - assertEquals(1, userDetails.getAuthorities().length); - assertEquals(DEFAULT_ROLE, - userDetails.getAuthorities()[0].getAuthority()); - } catch (BadCredentialsException ex) { - fail(); - } - } - - /** Test that the user who is identified by - * UID (uid=..) can be authenticated. */ - public void testSimpleUidUser() throws NamingException { - dao.setUsernameFormat("uid={0},ou=users,ou=system"); - dao.setUserLookupNameFormat("uid={0},ou=users"); - dao.setDefaultRole(DEFAULT_ROLE); - - try { - System.out.println("Attempting user auth."); - - UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user", - "plaintext"); - - //System.out.println( "UserDetails = " + userDetails ); - - assertEquals(1, userDetails.getAuthorities().length); - assertEquals(DEFAULT_ROLE, - userDetails.getAuthorities()[0].getAuthority()); - } catch (BadCredentialsException ex) { - System.out.println("Unable to authenticate user."); - ex.printStackTrace(); - fail(); - } - } - - /** Test that a login w/ a bad password fails. */ - public void testSimpleUidUserBadPassword() throws NamingException { - dao.setUsernameFormat("uid={0},ou=users,ou=system"); - dao.setUserLookupNameFormat("uid={0},ou=users"); - dao.setDefaultRole(DEFAULT_ROLE); - - try { - UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user", - "plainlywrong"); - fail(); - } catch (BadCredentialsException ex) { - assertTrue(true); - } - } - - /** - * Setup the basic properties of our LdapPasswordAuthenticationDao - */ - protected void setUp() { - dao = new LdapPasswordAuthenticationDao(); - dao.setUrl("ldap://localhost:389/ou=system"); - } - -} diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/PasswordDaoAuthenticationProviderTests.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/PasswordDaoAuthenticationProviderTests.java deleted file mode 100644 index 0b71fb9472..0000000000 --- a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/PasswordDaoAuthenticationProviderTests.java +++ /dev/null @@ -1,431 +0,0 @@ -/* Copyright 2004, 2005 Acegi Technology Pty Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.acegisecurity.providers.dao.ldap; - -import java.util.HashMap; -import java.util.Map; - -import junit.framework.TestCase; -import org.acegisecurity.AccountExpiredException; -import org.acegisecurity.Authentication; -import org.acegisecurity.AuthenticationServiceException; -import org.acegisecurity.BadCredentialsException; -import org.acegisecurity.CredentialsExpiredException; -import org.acegisecurity.DisabledException; -import org.acegisecurity.GrantedAuthority; -import org.acegisecurity.GrantedAuthorityImpl; -import org.acegisecurity.LockedException; -import org.acegisecurity.providers.TestingAuthenticationToken; -import org.acegisecurity.providers.UsernamePasswordAuthenticationToken; -import org.acegisecurity.providers.dao.UserCache; -import org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache; -import org.acegisecurity.providers.dao.cache.NullUserCache; -import org.acegisecurity.userdetails.User; -import org.acegisecurity.userdetails.UserDetails; -import org.acegisecurity.userdetails.UsernameNotFoundException; - -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DataRetrievalFailureException; - - -/** - * Tests {@link PasswordDaoAuthenticationProvider}. - * - * @author Karel Miarka - */ -public class PasswordDaoAuthenticationProviderTests extends TestCase { - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(PasswordDaoAuthenticationProviderTests.class); - } - - public void testAuthenticateFailsForIncorrectPasswordCase() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "KOala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown BadCredentialsException"); - } catch (BadCredentialsException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsIfAccountExpired() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", - "opal"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserPeterAccountExpired()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown AccountExpiredException"); - } catch (AccountExpiredException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsIfAccountLocked() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", - "opal"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserPeterAccountLocked()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown AccountExpiredException"); - } catch (LockedException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsIfCredentialsExpired() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", - "opal"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserPeterCredentialsExpired()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown CredentialsExpiredException"); - } catch (CredentialsExpiredException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsIfUserDisabled() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", - "opal"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserPeter()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown DisabledException"); - } catch (DisabledException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsWhenAuthenticationDaoHasBackendFailure() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "koala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoSimulateBackendError()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown AuthenticationServiceException"); - } catch (AuthenticationServiceException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsWithInvalidPassword() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "INVALID_PASSWORD"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown BadCredentialsException"); - } catch (BadCredentialsException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsWithInvalidUsername() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", - "koala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown BadCredentialsException"); - } catch (BadCredentialsException expected) { - assertTrue(true); - } - } - - public void testAuthenticateFailsWithMixedCaseUsernameIfDefaultChanged() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("MaRiSSA", - "koala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - try { - provider.authenticate(token); - fail("Should have thrown BadCredentialsException"); - } catch (BadCredentialsException expected) { - assertTrue(true); - } - } - - public void testAuthenticates() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "koala"); - token.setDetails("192.168.0.1"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - Authentication result = provider.authenticate(token); - - if (!(result instanceof UsernamePasswordAuthenticationToken)) { - fail( - "Should have returned instance of UsernamePasswordAuthenticationToken"); - } - - UsernamePasswordAuthenticationToken castResult = (UsernamePasswordAuthenticationToken) result; - assertEquals(User.class, castResult.getPrincipal().getClass()); - assertEquals("koala", castResult.getCredentials()); - assertEquals("ROLE_ONE", castResult.getAuthorities()[0].getAuthority()); - assertEquals("ROLE_TWO", castResult.getAuthorities()[1].getAuthority()); - assertEquals("192.168.0.1", castResult.getDetails()); - } - - public void testAuthenticatesASecondTime() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "koala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - - Authentication result = provider.authenticate(token); - - if (!(result instanceof UsernamePasswordAuthenticationToken)) { - fail( - "Should have returned instance of UsernamePasswordAuthenticationToken"); - } - - // Now try to authenticate with the previous result (with its UserDetails) - Authentication result2 = provider.authenticate(result); - - if (!(result2 instanceof UsernamePasswordAuthenticationToken)) { - fail( - "Should have returned instance of UsernamePasswordAuthenticationToken"); - } - - assertEquals(result.getCredentials(), result2.getCredentials()); - } - - public void testAuthenticatesWithForcePrincipalAsString() { - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", - "koala"); - - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - provider.setUserCache(new MockUserCache()); - provider.setForcePrincipalAsString(true); - - Authentication result = provider.authenticate(token); - - if (!(result instanceof UsernamePasswordAuthenticationToken)) { - fail( - "Should have returned instance of UsernamePasswordAuthenticationToken"); - } - - UsernamePasswordAuthenticationToken castResult = (UsernamePasswordAuthenticationToken) result; - assertEquals(String.class, castResult.getPrincipal().getClass()); - assertEquals("marissa", castResult.getPrincipal()); - } - - public void testGettersSetters() { - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setUserCache(new EhCacheBasedUserCache()); - assertEquals(EhCacheBasedUserCache.class, - provider.getUserCache().getClass()); - - assertFalse(provider.isForcePrincipalAsString()); - provider.setForcePrincipalAsString(true); - assertTrue(provider.isForcePrincipalAsString()); - } - - public void testStartupFailsIfNoAuthenticationDao() - throws Exception { - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - - try { - provider.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertTrue(true); - } - } - - public void testStartupFailsIfNoUserCacheSet() throws Exception { - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - provider.setPasswordAuthenticationDao(new MockAuthenticationDaoUserMarissa()); - assertEquals(NullUserCache.class, provider.getUserCache().getClass()); - provider.setUserCache(null); - - try { - provider.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertTrue(true); - } - } - - public void testStartupSuccess() throws Exception { - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - PasswordAuthenticationDao dao = new MockAuthenticationDaoUserMarissa(); - provider.setPasswordAuthenticationDao(dao); - provider.setUserCache(new MockUserCache()); - assertEquals(dao, provider.getPasswordAuthenticationDao()); - provider.afterPropertiesSet(); - assertTrue(true); - } - - public void testSupports() { - PasswordDaoAuthenticationProvider provider = new PasswordDaoAuthenticationProvider(); - assertTrue(provider.supports(UsernamePasswordAuthenticationToken.class)); - assertTrue(!provider.supports(TestingAuthenticationToken.class)); - } - - //~ Inner Classes ========================================================== - - private class MockAuthenticationDaoSimulateBackendError - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws BadCredentialsException, DataAccessException { - throw new DataRetrievalFailureException( - "This mock simulator is designed to fail"); - } - } - - private class MockAuthenticationDaoUserMarissa - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws BadCredentialsException, DataAccessException { - if ("marissa".equals(username) && "koala".equals(password)) { - return new User("marissa", "koala", true, true, true, true, - new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl( - "ROLE_TWO")}); - } else { - throw new BadCredentialsException("Invalid credentials"); - } - } - } - - private class MockAuthenticationDaoUserPeter - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws BadCredentialsException, DataAccessException { - if ("peter".equals(username) && "opal".equals(password)) { - return new User("peter", "opal", false, true, true, true, - new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl( - "ROLE_TWO")}); - } else { - throw new BadCredentialsException("Invalid credentials"); - } - } - } - - private class MockAuthenticationDaoUserPeterAccountExpired - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws UsernameNotFoundException, DataAccessException { - if ("peter".equals(username)) { - return new User("peter", "opal", true, false, true, true, - new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl( - "ROLE_TWO")}); - } else { - throw new UsernameNotFoundException("Could not find: " - + username); - } - } - } - - private class MockAuthenticationDaoUserPeterAccountLocked - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws UsernameNotFoundException, DataAccessException { - if ("peter".equals(username)) { - return new User("peter", "opal", true, true, true, false, - new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl( - "ROLE_TWO")}); - } else { - throw new UsernameNotFoundException("Could not find: " - + username); - } - } - } - - private class MockAuthenticationDaoUserPeterCredentialsExpired - implements PasswordAuthenticationDao { - public UserDetails loadUserByUsernameAndPassword(String username, - String password) - throws UsernameNotFoundException, DataAccessException { - if ("peter".equals(username)) { - return new User("peter", "opal", true, true, false, true, - new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl( - "ROLE_TWO")}); - } else { - throw new UsernameNotFoundException("Could not find: " - + username); - } - } - } - - private class MockUserCache implements UserCache { - private Map cache = new HashMap(); - - public UserDetails getUserFromCache(String username) { - return (User) cache.get(username); - } - - public void putUserInCache(UserDetails user) { - cache.put(user.getUsername(), user); - } - - public void removeUserFromCache(String username) {} - } -} diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/package.html b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/package.html deleted file mode 100644 index 6b32a12663..0000000000 --- a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/package.html +++ /dev/null @@ -1,43 +0,0 @@ - -
-- Because the inter-class dependencies may not be obvious at first glance - they are documented for this package; most of this complexity is on account - of the JUnit design, hopefully future testing frameworks will be less intrusive. -
-