From: Andrew Bartlett Date: Thu, 3 Aug 2006 09:18:44 +0000 (+0000) Subject: r17380: An expanded test, cross-referencing the global catalog to the main port. X-Git-Tag: samba-misc-tags/initial-v4-0-unstable~3827 X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=commitdiff_plain;h=eadc24ed291dcdb456139a206c6c8acf92bab6da r17380: An expanded test, cross-referencing the global catalog to the main port. Andrew Bartlett --- diff --git a/testprogs/ejs/ldap.js b/testprogs/ejs/ldap.js index 0e7632aea17..37c109bbf4d 100755 --- a/testprogs/ejs/ldap.js +++ b/testprogs/ejs/ldap.js @@ -5,6 +5,7 @@ exec smbscript "$0" ${1+"$@"} */ var ldb = ldb_init(); +var gc_ldb = ldb_init(); var options = GetOptions(ARGV, "POPT_AUTOHELP", @@ -24,7 +25,7 @@ if (options.ARGV.length != 1) { var host = options.ARGV[0]; -function basic_tests(ldb, base_dn) +function basic_tests(ldb, gc_ldb, base_dn, configuration_dn) { println("Running basic tests"); @@ -195,13 +196,22 @@ objectClass: user println("Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon))"); var res3 = ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))"); - if (res.length != 1) { + if (res3.length != 1) { println("Could not find (&(cn=ldaptestuser)(objectCategory=PerSon))"); - assert(res.length == 1); + assert(res3.length == 1); } assert(res[0].dn == res3[0].dn); + println("Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"); + var res3gc = gc_ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))"); + if (res3gc.length != 1) { + println("Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"); + assert(res3gc.length == 1); + } + + assert(res[0].dn == res3gc[0].dn); + ok = ldb.del(res[0].dn); if (!ok) { println(ldb.errstring()); @@ -238,6 +248,15 @@ objectClass: user assert(res[0].dn == res2[0].dn); + println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"); + var res2gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))"); + if (res2gc.length != 1) { + println("Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"); + assert(res2gc.length == 1); + } + + assert(res[0].dn == res2[0].dn); + println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER))"); var res3 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))"); if (res3.length != 1) { @@ -247,6 +266,15 @@ objectClass: user assert(res[0].dn == res3[0].dn); + println("Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"); + var res3gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))"); + if (res3gc.length != 1) { + println("Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"); + assert(res3gc.length == 1); + } + + assert(res[0].dn == res3gc[0].dn); + println("Testing ldb.search for (&(cn=ldaptestcomp*r)(objectCategory=compuTER))"); var res4 = ldb.search("(&(cn=ldaptestcomp*r)(objectCategory=compuTER))"); if (res4.length != 1) { @@ -366,6 +394,31 @@ objectClass: user assert(res[0].highestCommittedUSN != undefined); assert(res[0].highestCommittedUSN != 0); + println("Testing that we can't get at the configuration DN from the main search base"); + var attrs = new Array("cn"); + var res = ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs); + assert (res.length == 0); + + println("Testing that we do find configuration elements in the global catlog"); + var attrs = new Array("cn"); + var res = gc_ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs); + assert (res.length > 0); + + println("Testing that we do find configuration elements and user elements at the same time"); + var attrs = new Array("cn"); + var res = gc_ldb.search("(|(objectClass=crossRef)(objectClass=person))", base_dn, ldb.SCOPE_SUBTREE, attrs); + assert (res.length > 0); + + println("Testing that we do find configuration elements in the global catlog, with the configuration basedn"); + var attrs = new Array("cn"); + var res = gc_ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs); + assert (res.length > 0); + + println("Testing that we can get at the configuration DN on the main LDAP port"); + var attrs = new Array("cn"); + var res = ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs); + assert (res.length > 0); + } function find_basedn(ldb) @@ -376,14 +429,26 @@ function find_basedn(ldb) return res[0].defaultNamingContext; } +function find_configurationdn(ldb) +{ + var attrs = new Array("configurationNamingContext"); + var res = ldb.search("", "", ldb.SCOPE_BASE, attrs); + assert(res.length == 1); + return res[0].configurationNamingContext; +} + /* use command line creds if available */ ldb.credentials = options.get_credentials(); +gc_ldb.credentials = options.get_credentials(); var ok = ldb.connect("ldap://" + host); var base_dn = find_basedn(ldb); +var configuration_dn = find_configurationdn(ldb); printf("baseDN: %s\n", base_dn); -basic_tests(ldb, base_dn) +var ok = gc_ldb.connect("ldap://" + host + ":3268"); + +basic_tests(ldb, gc_ldb, base_dn, configuration_dn) return 0;