|
|
@@ -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();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|