Update project workspace settings to Java 1.5. NB: Maven remains at 1.3 compatibility for all subprojects except "domain". It is recommended the Eclipse "Problems" view be customised to not display items containing "Type Safety:" in their description. Developers should NOT introduce 1.5+ dependencies to any projects apart from "domain".
This commit is contained in:
parent
e08e66dec6
commit
fa6924a373
|
@ -0,0 +1,12 @@
|
||||||
|
#Mon May 09 00:49:50 GMT 2005
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.5
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -74,12 +74,12 @@ public class NamedEntityObjectIdentity implements AclObjectIdentity {
|
||||||
Class clazz = object.getClass();
|
Class clazz = object.getClass();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Method method = clazz.getMethod("getId", null);
|
Method method = clazz.getMethod("getId", new Class[] {});
|
||||||
Object result = method.invoke(object, null);
|
Object result = method.invoke(object, new Object[] {});
|
||||||
this.id = result.toString();
|
this.id = result.toString();
|
||||||
} catch (NoSuchMethodException nsme) {
|
} catch (NoSuchMethodException nsme) {
|
||||||
throw new IllegalArgumentException("Object of class '" + clazz
|
throw new IllegalArgumentException("Object of class '" + clazz
|
||||||
+ "' does not provide the required getId() method: " + object);
|
+ "' does not provide the required getId() method: " + object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -142,7 +142,7 @@ public class MethodDefinitionAttributes extends AbstractMethodDefinitionSource {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Method m = clazz.getDeclaredMethod(method.getName(),
|
Method m = clazz.getDeclaredMethod(method.getName(),
|
||||||
method.getParameterTypes());
|
(Class[]) method.getParameterTypes());
|
||||||
addMethodAttributes(definition, m);
|
addMethodAttributes(definition, m);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// this won't happen since we are getting a method from an interface that
|
// this won't happen since we are getting a method from an interface that
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -223,7 +223,7 @@ public class MethodDefinitionMap extends AbstractMethodDefinitionSource {
|
||||||
try {
|
try {
|
||||||
// Look for the method on the current interface
|
// Look for the method on the current interface
|
||||||
Method interfaceMethod = clazz.getDeclaredMethod(method.getName(),
|
Method interfaceMethod = clazz.getDeclaredMethod(method.getName(),
|
||||||
method.getParameterTypes());
|
(Class[]) method.getParameterTypes());
|
||||||
ConfigAttributeDefinition interfaceAssigned = (ConfigAttributeDefinition) this.methodMap
|
ConfigAttributeDefinition interfaceAssigned = (ConfigAttributeDefinition) this.methodMap
|
||||||
.get(interfaceMethod);
|
.get(interfaceMethod);
|
||||||
merge(definition, interfaceAssigned);
|
merge(definition, interfaceAssigned);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -17,9 +17,9 @@ package net.sf.acegisecurity.providers.dao.event;
|
||||||
|
|
||||||
import net.sf.acegisecurity.Authentication;
|
import net.sf.acegisecurity.Authentication;
|
||||||
import net.sf.acegisecurity.UserDetails;
|
import net.sf.acegisecurity.UserDetails;
|
||||||
import net.sf.acegisecurity.providers.dao.User;
|
|
||||||
|
|
||||||
import org.springframework.context.ApplicationEvent;
|
import org.springframework.context.ApplicationEvent;
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -18,7 +18,6 @@ package net.sf.acegisecurity.providers.dao.salt;
|
||||||
import net.sf.acegisecurity.AuthenticationServiceException;
|
import net.sf.acegisecurity.AuthenticationServiceException;
|
||||||
import net.sf.acegisecurity.UserDetails;
|
import net.sf.acegisecurity.UserDetails;
|
||||||
import net.sf.acegisecurity.providers.dao.SaltSource;
|
import net.sf.acegisecurity.providers.dao.SaltSource;
|
||||||
import net.sf.acegisecurity.providers.dao.User;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
|
||||||
|
@ -64,9 +63,9 @@ public class ReflectionSaltSource implements SaltSource, InitializingBean {
|
||||||
public Object getSalt(UserDetails user) {
|
public Object getSalt(UserDetails user) {
|
||||||
try {
|
try {
|
||||||
Method reflectionMethod = user.getClass().getMethod(this.userPropertyToUse,
|
Method reflectionMethod = user.getClass().getMethod(this.userPropertyToUse,
|
||||||
null);
|
new Class[] {});
|
||||||
|
|
||||||
return reflectionMethod.invoke(user, null);
|
return reflectionMethod.invoke(user, new Object[] {});
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
throw new AuthenticationServiceException(exception.getMessage());
|
throw new AuthenticationServiceException(exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -17,7 +17,6 @@ package net.sf.acegisecurity.providers.dao.salt;
|
||||||
|
|
||||||
import net.sf.acegisecurity.UserDetails;
|
import net.sf.acegisecurity.UserDetails;
|
||||||
import net.sf.acegisecurity.providers.dao.SaltSource;
|
import net.sf.acegisecurity.providers.dao.SaltSource;
|
||||||
import net.sf.acegisecurity.providers.dao.User;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
|
|
||||||
package net.sf.acegisecurity;
|
package net.sf.acegisecurity;
|
||||||
|
|
||||||
import net.sf.acegisecurity.providers.dao.User;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -29,6 +29,7 @@ import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
@ -195,12 +196,15 @@ public class BasicAclEntryVoter implements AccessDecisionVoter,
|
||||||
}
|
}
|
||||||
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
Assert.notNull(processConfigAttribute, "A processConfigAttribute is mandatory");
|
Assert.notNull(processConfigAttribute,
|
||||||
|
"A processConfigAttribute is mandatory");
|
||||||
Assert.notNull(aclManager, "An aclManager is mandatory");
|
Assert.notNull(aclManager, "An aclManager is mandatory");
|
||||||
Assert.notNull(processDomainObjectClass, "A processDomainObjectClass is mandatory");
|
Assert.notNull(processDomainObjectClass,
|
||||||
|
"A processDomainObjectClass is mandatory");
|
||||||
|
|
||||||
if ((requirePermission == null) || (requirePermission.length == 0)) {
|
if ((requirePermission == null) || (requirePermission.length == 0)) {
|
||||||
throw new IllegalArgumentException("One or more requirePermission entries is mandatory");
|
throw new IllegalArgumentException(
|
||||||
|
"One or more requirePermission entries is mandatory");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,8 +252,10 @@ public class BasicAclEntryVoter implements AccessDecisionVoter,
|
||||||
if ((internalMethod != null) && !"".equals(internalMethod)) {
|
if ((internalMethod != null) && !"".equals(internalMethod)) {
|
||||||
try {
|
try {
|
||||||
Class clazz = domainObject.getClass();
|
Class clazz = domainObject.getClass();
|
||||||
Method method = clazz.getMethod(internalMethod, null);
|
Method method = clazz.getMethod(internalMethod,
|
||||||
domainObject = method.invoke(domainObject, null);
|
new Class[] {});
|
||||||
|
domainObject = method.invoke(domainObject,
|
||||||
|
new Object[] {});
|
||||||
} catch (NoSuchMethodException nsme) {
|
} catch (NoSuchMethodException nsme) {
|
||||||
throw new AuthorizationServiceException(
|
throw new AuthorizationServiceException(
|
||||||
"Object of class '" + domainObject.getClass()
|
"Object of class '" + domainObject.getClass()
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
# Values in this file will be overriden by any values with the same name
|
||||||
|
# in the user-created build.properties file.
|
||||||
|
|
||||||
|
# Compile settings
|
||||||
|
#
|
||||||
|
# Java 1.5 is required because we use enums extensively in this subproject
|
||||||
|
# (main Acegi Security project / parent) is Java 1.3 compatible
|
||||||
|
#
|
||||||
|
maven.compile.target=1.5
|
||||||
|
maven.compile.source=1.5
|
|
@ -1,49 +1,76 @@
|
||||||
|
/* 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 net.sf.acegisecurity.providers.dao.ldap;
|
package net.sf.acegisecurity.providers.dao.ldap;
|
||||||
|
|
||||||
import java.io.IOException;
|
import junit.framework.TestCase;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
|
|
||||||
import javax.naming.Context;
|
import javax.naming.Context;
|
||||||
import javax.naming.NamingException;
|
import javax.naming.NamingException;
|
||||||
import javax.naming.directory.DirContext;
|
import javax.naming.directory.DirContext;
|
||||||
import javax.naming.directory.InitialDirContext;
|
import javax.naming.directory.InitialDirContext;
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
/** Important note: this class merely defines certain
|
|
||||||
* base properties needed by all LDAP unit tests.
|
/**
|
||||||
|
* Important note: this class merely defines certain base properties needed by
|
||||||
|
* all LDAP unit tests.
|
||||||
*/
|
*/
|
||||||
public class BaseLdapTestCase extends TestCase {
|
public class BaseLdapTestCase extends TestCase {
|
||||||
|
//~ Static fields/initializers =============================================
|
||||||
|
|
||||||
// static finalizers, they'd be nice, as LdapTestHelper
|
// static finalizers, they'd be nice, as LdapTestHelper
|
||||||
// never seems to get the chance to cleanup after itself
|
// never seems to get the chance to cleanup after itself
|
||||||
protected static LdapTestHelper ldapTestHelper = new LdapTestHelper();
|
protected static LdapTestHelper ldapTestHelper = new LdapTestHelper();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
//InputStream in = BaseLdapTestCase.class.getResourceAsStream("net/sf/acegisecurity/providers/dao/ldap/test-data.ldif");
|
//InputStream in = BaseLdapTestCase.class.getResourceAsStream("net/sf/acegisecurity/providers/dao/ldap/test-data.ldif");
|
||||||
|
|
||||||
/* InputStream in = ldapTestHelper.getClass().getResourceAsStream("test-data.ldif");
|
/* InputStream in = ldapTestHelper.getClass().getResourceAsStream("test-data.ldif");
|
||||||
try {
|
try {
|
||||||
ldapTestHelper.importLDIF(in);
|
ldapTestHelper.importLDIF(in);
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
x.printStackTrace();
|
x.printStackTrace();
|
||||||
ldapTestHelper.shutdownServer();
|
ldapTestHelper.shutdownServer();
|
||||||
ldapTestHelper = null;
|
ldapTestHelper = null;
|
||||||
throw new RuntimeException("Server initialization failed.");
|
throw new RuntimeException("Server initialization failed.");
|
||||||
} */
|
} */
|
||||||
DirContentsInitializer.initialize( ldapTestHelper.getServerContext() );
|
DirContentsInitializer.initialize(ldapTestHelper.getServerContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
//~ Methods ================================================================
|
||||||
|
|
||||||
|
protected DirContext getClientContext() throws NamingException {
|
||||||
|
Hashtable env = new Hashtable();
|
||||||
|
env.put(Context.PROVIDER_URL, "ldap://localhost:389/ou=system");
|
||||||
|
env.put(Context.INITIAL_CONTEXT_FACTORY,
|
||||||
|
"com.sun.jndi.ldap.LdapCtxFactory");
|
||||||
|
env.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");
|
||||||
|
env.put(Context.SECURITY_CREDENTIALS, "secret");
|
||||||
|
|
||||||
|
return new InitialDirContext(env);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOCUMENT ME!
|
||||||
|
*
|
||||||
|
* @return The server context for LDAP ops. used for things like
|
||||||
|
* addding/removing users.
|
||||||
|
*/
|
||||||
|
protected DirContext getServerContext() {
|
||||||
|
return ldapTestHelper.getServerContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DirContext getClientContext() throws NamingException {
|
|
||||||
Hashtable env = new Hashtable();
|
|
||||||
env.put( Context.PROVIDER_URL, "ldap://localhost:389/ou=system" );
|
|
||||||
env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
|
|
||||||
env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
|
|
||||||
env.put( Context.SECURITY_CREDENTIALS, "secret" );
|
|
||||||
return new InitialDirContext( env );
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @return The server context for LDAP ops. used for things like addding/removing users. */
|
|
||||||
protected DirContext getServerContext() {
|
|
||||||
return ldapTestHelper.getServerContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,41 +1,112 @@
|
||||||
package net.sf.acegisecurity.providers.dao.ldap;
|
/* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
import javax.naming.NamingException;
|
package net.sf.acegisecurity.providers.dao.ldap;
|
||||||
|
|
||||||
import net.sf.acegisecurity.BadCredentialsException;
|
import net.sf.acegisecurity.BadCredentialsException;
|
||||||
import net.sf.acegisecurity.UserDetails;
|
import net.sf.acegisecurity.UserDetails;
|
||||||
import net.sf.acegisecurity.GrantedAuthority;
|
|
||||||
|
|
||||||
|
import javax.naming.NamingException;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOCUMENT ME!
|
||||||
|
*
|
||||||
|
* @author $author$
|
||||||
|
* @version $Revision$
|
||||||
|
*/
|
||||||
public class LdapPasswordAuthenticationTest extends BaseLdapTestCase {
|
public class LdapPasswordAuthenticationTest extends BaseLdapTestCase {
|
||||||
|
//~ Instance fields ========================================================
|
||||||
private LdapPasswordAuthenticationDao dao;
|
|
||||||
|
|
||||||
private String DEFAULT_ROLE = "DEFAULT_ROLE";
|
|
||||||
|
|
||||||
/** Setup the basic properties of our LdapPasswordAuthenticationDao */
|
|
||||||
protected void setUp() {
|
|
||||||
dao = new LdapPasswordAuthenticationDao();
|
|
||||||
dao.setURL("ldap://localhost:389/ou=system");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void testSimpleUidUser() throws NamingException {
|
private LdapPasswordAuthenticationDao dao;
|
||||||
|
private String DEFAULT_ROLE = "DEFAULT_ROLE";
|
||||||
|
|
||||||
|
//~ Methods ================================================================
|
||||||
|
|
||||||
|
public void testEmptyRoles() {
|
||||||
dao.setUserContext("uid={0},ou=users,ou=system");
|
dao.setUserContext("uid={0},ou=users,ou=system");
|
||||||
dao.setDefaultRole(DEFAULT_ROLE);
|
|
||||||
try {
|
try {
|
||||||
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user", "plaintext");
|
UserDetails userDetails = dao.loadUserByUsernameAndPassword("user.two",
|
||||||
assertEquals(1, userDetails.getAuthorities().length );
|
"plaintext2");
|
||||||
assertEquals(DEFAULT_ROLE, userDetails.getAuthorities()[0].getAuthority() );
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSimpleCnUser() throws NamingException {
|
||||||
|
dao.setUserContext("cn={0},ou=users,ou=system");
|
||||||
|
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) {
|
} catch (BadCredentialsException ex) {
|
||||||
fail();
|
fail();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testSimpleMultiUserContext() throws NamingException {
|
||||||
|
dao.setUserContexts(new String[] {"uid={0},ou=users,ou=system", "cn={0},ou=users,ou=system"});
|
||||||
|
dao.setDefaultRole(DEFAULT_ROLE);
|
||||||
|
|
||||||
|
try {
|
||||||
|
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user",
|
||||||
|
"plaintext");
|
||||||
|
assertEquals(1, userDetails.getAuthorities().length);
|
||||||
|
assertEquals(DEFAULT_ROLE,
|
||||||
|
userDetails.getAuthorities()[0].getAuthority());
|
||||||
|
|
||||||
|
UserDetails userDetails2 = dao.loadUserByUsernameAndPassword("user.two",
|
||||||
|
"plaintext2");
|
||||||
|
assertEquals(1, userDetails2.getAuthorities().length);
|
||||||
|
assertEquals(DEFAULT_ROLE,
|
||||||
|
userDetails2.getAuthorities()[0].getAuthority());
|
||||||
|
} catch (BadCredentialsException ex) {
|
||||||
|
fail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSimpleUidUser() throws NamingException {
|
||||||
|
dao.setUserContext("uid={0},ou=users,ou=system");
|
||||||
|
dao.setDefaultRole(DEFAULT_ROLE);
|
||||||
|
|
||||||
|
try {
|
||||||
|
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user",
|
||||||
|
"plaintext");
|
||||||
|
assertEquals(1, userDetails.getAuthorities().length);
|
||||||
|
assertEquals(DEFAULT_ROLE,
|
||||||
|
userDetails.getAuthorities()[0].getAuthority());
|
||||||
|
} catch (BadCredentialsException ex) {
|
||||||
|
fail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void testSimpleUidUserBadPassword() throws NamingException {
|
public void testSimpleUidUserBadPassword() throws NamingException {
|
||||||
dao.setUserContext("uid={0},ou=users,ou=system");
|
dao.setUserContext("uid={0},ou=users,ou=system");
|
||||||
dao.setDefaultRole(DEFAULT_ROLE);
|
dao.setDefaultRole(DEFAULT_ROLE);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user", "plainlywrong");
|
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user",
|
||||||
|
"plainlywrong");
|
||||||
|
|
||||||
//assertEquals(1, userDetails.getAuthorities().length );
|
//assertEquals(1, userDetails.getAuthorities().length );
|
||||||
//assertEquals(DEFAULT_ROLE, userDetails.getAuthorities()[0].getAuthority() );
|
//assertEquals(DEFAULT_ROLE, userDetails.getAuthorities()[0].getAuthority() );
|
||||||
fail();
|
fail();
|
||||||
|
@ -43,51 +114,19 @@ public class LdapPasswordAuthenticationTest extends BaseLdapTestCase {
|
||||||
assertTrue(true);
|
assertTrue(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSimpleCnUser() throws NamingException {
|
/**
|
||||||
dao.setUserContext("cn={0},ou=users,ou=system");
|
* Setup the basic properties of our LdapPasswordAuthenticationDao
|
||||||
dao.setDefaultRole(DEFAULT_ROLE);
|
*/
|
||||||
try {
|
protected void setUp() {
|
||||||
UserDetails userDetails = dao.loadUserByUsernameAndPassword("user.two", "plaintext2");
|
dao = new LdapPasswordAuthenticationDao();
|
||||||
assertEquals(1, userDetails.getAuthorities().length );
|
dao.setURL("ldap://localhost:389/ou=system");
|
||||||
assertEquals(DEFAULT_ROLE, userDetails.getAuthorities()[0].getAuthority() );
|
|
||||||
} catch (BadCredentialsException ex) {
|
|
||||||
fail();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSimpleMultiUserContext() throws NamingException {
|
|
||||||
dao.setUserContexts(new String[]{"uid={0},ou=users,ou=system", "cn={0},ou=users,ou=system"});
|
|
||||||
dao.setDefaultRole(DEFAULT_ROLE);
|
|
||||||
try {
|
|
||||||
UserDetails userDetails = dao.loadUserByUsernameAndPassword("one.user", "plaintext");
|
|
||||||
assertEquals(1, userDetails.getAuthorities().length );
|
|
||||||
assertEquals(DEFAULT_ROLE, userDetails.getAuthorities()[0].getAuthority() );
|
|
||||||
|
|
||||||
UserDetails userDetails2 = dao.loadUserByUsernameAndPassword("user.two", "plaintext2");
|
|
||||||
assertEquals(1, userDetails2.getAuthorities().length );
|
|
||||||
assertEquals(DEFAULT_ROLE, userDetails2.getAuthorities()[0].getAuthority() );
|
|
||||||
} catch (BadCredentialsException ex) {
|
|
||||||
fail();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testEmptyRoles() {
|
|
||||||
dao.setUserContext("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) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @todo:
|
* @todo:
|
||||||
* 1. two different groups...
|
* 1. two different groups...
|
||||||
* 2. two groups, limit 'roles'
|
* 2. two groups, limit 'roles'
|
||||||
* 3. other stuff...
|
* 3. other stuff...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue