KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > security > test > opends > LdapBasicUnitTestCase


1 /*
2  * JBoss, the OpenSource J2EE webOS
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7 package org.jboss.test.security.test.opends;
8
9 import java.io.File JavaDoc;
10 import java.net.URL JavaDoc;
11 import java.util.Hashtable JavaDoc;
12
13 import javax.naming.Context JavaDoc;
14 import javax.naming.NamingEnumeration JavaDoc;
15 import javax.naming.directory.DirContext JavaDoc;
16 import javax.naming.directory.InitialDirContext JavaDoc;
17 import javax.naming.directory.SearchControls JavaDoc;
18 import javax.naming.directory.SearchResult JavaDoc;
19
20 import junit.framework.Test;
21 import junit.framework.TestSuite;
22
23 import org.jboss.test.JBossTestCase;
24 import org.opends.server.tools.LDAPModify;
25
26 /**
27  * Basic tests for the ldap integration
28  * @author <a HREF="mailto:Anil.Saldhana@jboss.org">Anil Saldhana</a>
29  * @version $Revision$
30  * @since Sep 13, 2006
31  */

32 public class LdapBasicUnitTestCase extends JBossTestCase
33 {
34    public static Test suite()
35    {
36       TestSuite suite = new TestSuite();
37       suite.addTest(new LdapBasicUnitTestCase("testLdap"));
38       suite.addTest(new LdapBasicUnitTestCase("testJNDI"));
39       return suite;
40    }
41    
42    /**
43     * Inject the ldap initial ctx factory via system property
44     */

45    private String JavaDoc contextFactory = System.getProperty("jboss.security.ldap.ctxfactory",
46          "com.sun.jndi.ldap.LdapCtxFactory");
47    private OpenDSUtil util = new OpenDSUtil();
48    private String JavaDoc serverHost = getServerHost();
49    private String JavaDoc port = "1389";
50    private String JavaDoc adminDN = "cn=Directory Manager";
51    private String JavaDoc adminPW = "password";
52    private String JavaDoc dn = "dc=jboss,dc=org";
53    
54    public LdapBasicUnitTestCase(String JavaDoc name)
55    {
56       super(name);
57    }
58     
59    /**
60     * Test if a DN exists. If not, add it. Then do a search. Then delete
61     * @throws Exception
62     */

63    public void testLdap() throws Exception JavaDoc
64    {
65       if(util.existsDN(serverHost, port, dn))
66          util.deleteDN(serverHost, port, adminDN, adminPW, dn, true);
67       assertTrue("ldap add success?" , performLdifAdd());
68       assertTrue("ldap search success?" , util.existsDN(serverHost, port, dn));
69       assertTrue("ldap delete success?",
70             util.deleteDN(serverHost, port, adminDN, adminPW, dn, true));
71       assertFalse("ldap search should fail" , util.existsDN(serverHost, port, dn));
72    }
73    
74    /**
75     * Test that JNDI operations work
76     * @throws Exception
77     */

78    public void testJNDI() throws Exception JavaDoc
79    {
80       DirContext JavaDoc dc = null;
81       NamingEnumeration JavaDoc ne = null;
82       try
83       {
84          dc = this.getDirContext();
85          assertNotNull("DirContext exists?", dc);
86          if(util.existsDN(serverHost, port, dn))
87             util.deleteDN(serverHost, port, adminDN, adminPW, dn, true);
88          assertTrue("ldap add success?" , performLdifAdd());
89          SearchControls JavaDoc sc = new SearchControls JavaDoc();
90          sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
91          ne = dc.search(dn, "(objectclass=*)", sc);
92          while (ne.hasMore())
93          {
94             SearchResult JavaDoc sr = (SearchResult JavaDoc) ne.next();
95             assertTrue("Search Result exists?", sr != null);
96         }
97         assertTrue("ldap delete success?",
98                util.deleteDN(serverHost, port, adminDN, adminPW, dn, true));
99         assertFalse("ldap search should fail" , util.existsDN(serverHost, port, dn));
100       }
101       finally
102       {
103          if(ne != null)
104             ne.close();
105          if(dc != null)
106            dc.close();
107       }
108    }
109  
110    //***************************************************************
111
// PRIVATE METHODS
112
//***************************************************************
113
private boolean performLdifAdd() throws Exception JavaDoc
114    {
115       String JavaDoc fileurl = this.getResourceURL("security/opends/ldif/example1.ldif");
116       URL JavaDoc url = this.getDeployURL(fileurl);
117       log.debug("ldap add ldif url="+url);
118       File JavaDoc file = new File JavaDoc(url.getPath());
119       String JavaDoc[] cmd = new String JavaDoc[] {"-h", getServerHost(), "-p",
120             "1389", "-D", "cn=Directory Manager",
121             "-w", "password",
122             "-a", "-f",file.getPath()};
123       
124       return LDAPModify.mainModify(cmd) == 0;
125    }
126    
127    private DirContext JavaDoc getDirContext() throws Exception JavaDoc
128    {
129       String JavaDoc url = "ldap://" + getServerHost() + ":1389";
130       Hashtable JavaDoc env = new Hashtable JavaDoc();
131       env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
132       env.put(Context.PROVIDER_URL, url);
133       env.put(Context.SECURITY_AUTHENTICATION, "simple");
134       env.put(Context.SECURITY_PRINCIPAL, this.adminDN);
135       env.put(Context.SECURITY_CREDENTIALS, this.adminPW);
136       return new InitialDirContext JavaDoc(env);
137    }
138 }
139
Popular Tags