diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/support/BaseLdapTestCase.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/support/BaseLdapTestCase.java new file mode 100644 index 0000000000..e57dec61a9 --- /dev/null +++ b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/support/BaseLdapTestCase.java @@ -0,0 +1,78 @@ +/* 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.support; + +import junit.framework.TestCase; + +import java.util.Hashtable; + +import javax.naming.Context; +import javax.naming.NamingException; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; + + + +/** + * This class defines certain base properties needed by + * all LDAP unit tests. It also uses the EmbeddedLdapServerController to + * bootstrap an 'embedded' instance of the Apache Directory Server to + * run the Unit tests against. + */ +public class BaseLdapTestCase extends TestCase { + //~ Static fields/initializers ============================================= + + // static finalizers, they'd be nice, as the EmbeddedLdapServerController + // never seems to get the chance to cleanup after itself + // Maybe JUnit4 will include such a thing. + protected static EmbeddedLdapServerController embeddedLdapServerController = new EmbeddedLdapServerController(); + + static { + try { + LdapDirInitializer.intializeDir( embeddedLdapServerController.getServerContext() ); + } catch (NamingException e) { + System.out.println("Error: unable to initialize LDAP Server for Unit tests."); + System.out.println(" Unable to continue testing LDAP Authentication Dao without LDAP Server."); + e.printStackTrace(); + } + } + + //~ Methods ================================================================ + + /** Returns a 'client' connection to the embedded LDAP Server, using + * JNDI to connect. + */ + 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 operations; used for things like + * addding/removing users to to test against. + */ + protected DirContext getServerContext() { + return embeddedLdapServerController.getServerContext(); + } + +}