From 020b4d8e3280205c5351d0f1c397e1fd0d7f7a0a Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Mon, 1 Aug 2005 03:02:48 +0000 Subject: [PATCH] Updated version of the BaseLdapTestCase which is in a better named package (.support), with better named helper classes. --- .../dao/ldap/support/BaseLdapTestCase.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/support/BaseLdapTestCase.java 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(); + } + +}