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