From 3e6368577664becbfa59ce6a36da58b22c1ab9e2 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Fri, 18 Mar 2005 03:41:33 +0000 Subject: [PATCH] I don't have any test built using these yet, but both should server as decent bases from which to build tests for LDAP functionality. --- .../providers/dao/ldap/BaseLdapTestCase.java | 37 ++++++++++++++ .../providers/dao/ldap/LdapTestHelper.java | 49 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/BaseLdapTestCase.java create mode 100644 sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapTestHelper.java diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/BaseLdapTestCase.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/BaseLdapTestCase.java new file mode 100644 index 0000000000..2fa87e6097 --- /dev/null +++ b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/BaseLdapTestCase.java @@ -0,0 +1,37 @@ +package net.sf.acegisecurity.providers.dao.ldap; + +import java.util.Hashtable; + +import javax.naming.Context; +import javax.naming.NamingException; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; + +import org.apache.ldap.server.jndi.EnvKeys; + +import junit.framework.TestCase; + +/** Important note: this class merely defines certain + * base properties needed by all LDAP unit tests. + */ +public class BaseLdapTestCase extends TestCase { + + protected static LdapTestHelper ldapTestHelper = new LdapTestHelper(); + + /** Create and return a Hashtable with standard JNDI settings for our tests. */ + protected Hashtable getEnvironment() { + Hashtable env = new Hashtable(); + env.put( Context.PROVIDER_URL, "ou=system" ); + env.put( Context.INITIAL_CONTEXT_FACTORY, "org.apache.ldap.server.jndi.ServerContextFactory" ); + env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" ); + env.put( Context.SECURITY_CREDENTIALS, "secret" ); + env.put( EnvKeys.WKDIR, ldapTestHelper.getTempDirectoryPath() ); + return env; + } + + /** Create and return a Hashtable with standard JNDI settings for our tests. + * @throws NamingException */ + protected DirContext getInitialDirContext() throws NamingException { + return new InitialDirContext( getEnvironment() ); + } +} diff --git a/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapTestHelper.java b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapTestHelper.java new file mode 100644 index 0000000000..c8a850c5e0 --- /dev/null +++ b/sandbox/src/test/java/org/acegisecurity/providers/dao/ldap/LdapTestHelper.java @@ -0,0 +1,49 @@ +package net.sf.acegisecurity.providers.dao.ldap; + +import java.io.File; + +/** + * LdapTestHelper - used as static field in BaseLdapTestCase; + * responsible for global state during JUnit tests - since + * JUnit reinstantiates the test class for every method. + * + */ +public class LdapTestHelper { + + private File tempDirectory; + + /** + * + */ + public LdapTestHelper() { + String tmpDir = System.getProperty("java.io.tmpdir"); + File dir = new File(tmpDir); + tempDirectory = new File(dir, "apacheds_tmp"); + if (!tempDirectory.exists()) { + tempDirectory.mkdir(); + //tempDirectory.deleteOnExit(); + } + } + + /** since file..deleteOnExit() isn't working for me, explicitly force cleanup. */ + protected void finalize() throws Throwable { + File[] files = tempDirectory.listFiles(); + for (int i = 0; i < files.length; i++) { + files[i].delete(); + } + tempDirectory.delete(); + super.finalize(); + } + + + public File getTempDirectory() { + return tempDirectory; + } + + public String getTempDirectoryPath() { + return tempDirectory.getAbsolutePath(); + } + + + +}