1 7 package org.jboss.test.security.test.opends; 8 9 import java.io.File ; 10 import java.net.URL ; 11 import java.util.Hashtable ; 12 13 import javax.naming.Context ; 14 import javax.naming.NamingEnumeration ; 15 import javax.naming.directory.DirContext ; 16 import javax.naming.directory.InitialDirContext ; 17 import javax.naming.directory.SearchControls ; 18 import javax.naming.directory.SearchResult ; 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 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 45 private String contextFactory = System.getProperty("jboss.security.ldap.ctxfactory", 46 "com.sun.jndi.ldap.LdapCtxFactory"); 47 private OpenDSUtil util = new OpenDSUtil(); 48 private String serverHost = getServerHost(); 49 private String port = "1389"; 50 private String adminDN = "cn=Directory Manager"; 51 private String adminPW = "password"; 52 private String dn = "dc=jboss,dc=org"; 53 54 public LdapBasicUnitTestCase(String name) 55 { 56 super(name); 57 } 58 59 63 public void testLdap() throws Exception 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 78 public void testJNDI() throws Exception 79 { 80 DirContext dc = null; 81 NamingEnumeration 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 sc = new SearchControls (); 90 sc.setSearchScope(SearchControls.SUBTREE_SCOPE); 91 ne = dc.search(dn, "(objectclass=*)", sc); 92 while (ne.hasMore()) 93 { 94 SearchResult sr = (SearchResult ) 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 private boolean performLdifAdd() throws Exception 114 { 115 String fileurl = this.getResourceURL("security/opends/ldif/example1.ldif"); 116 URL url = this.getDeployURL(fileurl); 117 log.debug("ldap add ldif url="+url); 118 File file = new File (url.getPath()); 119 String [] cmd = new String [] {"-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 getDirContext() throws Exception 128 { 129 String url = "ldap://" + getServerHost() + ":1389"; 130 Hashtable env = new Hashtable (); 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 (env); 137 } 138 } 139 | Popular Tags |