summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/tests
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/ldb/tests')
-rwxr-xr-xsource4/lib/ldb/tests/python/ldap.py1933
1 files changed, 772 insertions, 1161 deletions
diff --git a/source4/lib/ldb/tests/python/ldap.py b/source4/lib/ldb/tests/python/ldap.py
index 519e228fca..898a7336ad 100755
--- a/source4/lib/ldb/tests/python/ldap.py
+++ b/source4/lib/ldb/tests/python/ldap.py
@@ -1,171 +1,142 @@
#!/usr/bin/python
+# -*- coding: utf-8 -*-
# This is a port of the original in testprogs/ejs/ldap.js
+import getopt
+import optparse
import sys
-if len(sys.argv) < 2:
- print "Usage: %s <HOST>" % sys.argv[0]
+# Add path to the library for in-tree use
+sys.path.append("scripting/python")
+import samba.getopt as options
+
+from auth import system_session
+from samba import Ldb
+
+parser = optparse.OptionParser("ldap [options] <host>")
+parser.add_option_group(options.SambaOptions(parser))
+parser.add_option_group(options.VersionOptions(parser))
+# use command line creds if available
+credopts = options.CredentialsOptions(parser)
+parser.add_option_group(credopts)
+creds = credopts.get_credentials()
+opts, args = parser.parse_args()
+
+if len(args) < 1:
+ parser.print_usage()
sys.exit(1)
-host = sys.argv[1]
+host = args[0]
def assertEquals(a1, a2):
assert a1 == a2
def basic_tests(ldb, gc_ldb, base_dn, configuration_dn, schema_dn):
- print "Running basic tests"
+ print "Running basic tests"
- ldb.delete("cn=ldaptestuser,cn=users," + base_dn)
- ldb.delete("cn=ldaptestgroup,cn=users," + base_dn)
+ ldb.delete("cn=ldaptestuser,cn=users," + base_dn)
+ ldb.delete("cn=ldaptestgroup,cn=users," + base_dn)
- print "Testing group add with invalid member"
- ok = ldb.add({
+ print "Testing group add with invalid member"
+ try:
+ ldb.add({
"dn": "cn=ldaptestgroup,cn=uSers," + base_dn,
"objectclass": "group",
"member": "cn=ldaptestuser,cn=useRs," + base_dn})
-
- if (ok.error != 32) { # LDAP_NO_SUCH_OBJECT
- print ok.errstr
- assertEquals(ok.error, 32)
- }
-
- print "Testing user add"
- ok = ldb.add({
+ except LdbError, (num, _):
+ assert error == 32 # LDAP_NO_SUCH_OBJECT
+ else:
+ assert False
+
+ print "Testing user add"
+ try:
+ ldb.add({
"dn": "cn=ldaptestuser,cn=uSers," + base_dn,
"objectclass": ["user", "person"],
"cN": "LDAPtestUSER",
"givenname": "ldap",
"sn": "testy"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestuser,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({
+ except LdbError:
+ ldb.delete("cn=ldaptestuser,cn=users," + base_dn)
+ ldb.add({
"dn": "cn=ldaptestuser,cn=uSers," + base_dn,
"objectclass": ["user", "person"],
"cN": "LDAPtestUSER",
"givenname": "ldap",
"sn": "testy"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
- ok = ldb.add({
+ ldb.add({
"dn": "cn=ldaptestgroup,cn=uSers," + base_dn,
"objectclass": "group",
"member": "cn=ldaptestuser,cn=useRs," + base_dn})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({
+ try:
+ ldb.add({
"dn": "cn=ldaptestcomputer,cn=computers," + base_dn,
"objectclass": "computer",
"cN": "LDAPtestCOMPUTER"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestcomputer,cn=computers," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({
+ except LdbError:
+ ldb.delete("cn=ldaptestcomputer,cn=computers," + base_dn)
+ ldb.add({
"dn": "cn=ldaptestcomputer,cn=computers," + base_dn,
"objectClass": "computer",
"cn": "LDAPtestCOMPUTER"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.add({"dn": "cn=ldaptest2computer,cn=computers," + base_dn,
+
+ try:
+ ldb.add({"dn": "cn=ldaptest2computer,cn=computers," + base_dn,
"objectClass": "computer",
"cn": "LDAPtest2COMPUTER",
"userAccountControl": "4096",
"displayname": "ldap testy"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptest2computer,cn=computers," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({
+ except LdbError:
+ ldb.delete("cn=ldaptest2computer,cn=computers," + base_dn)
+ ldb.add({
"dn": "cn=ldaptest2computer,cn=computers," + base_dn,
"objectClass": "computer",
"cn": "LDAPtest2COMPUTER",
"userAccountControl": "4096",
"displayname": "ldap testy"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- print "Testing attribute or value exists behaviour"
- ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
+
+ print "Testing attribute or value exists behaviour"
+ try:
+ ldb.modify_ldif("""
+dn: cn=ldaptest2computer,cn=computers,""" + base_dn + """
changetype: modify
replace: servicePrincipalName
servicePrincipalName: host/ldaptest2computer
servicePrincipalName: host/ldaptest2computer
servicePrincipalName: cifs/ldaptest2computer
-")
-
-#LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
- if (ok.error != 20) {
- print "Expected error LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS, got :" + ok.errstr
- assertEquals(ok.error, 20)
- }
+""")
+ except LdbError, (num, msg):
+ #LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
+ assert num == 20, "Expected error LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS, got : %s" % msg
- ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
+ ldb.modify_ldif("""
+dn: cn=ldaptest2computer,cn=computers,""" + base_dn + """
changetype: modify
replace: servicePrincipalName
servicePrincipalName: host/ldaptest2computer
servicePrincipalName: cifs/ldaptest2computer
-")
-
- if (ok.error != 0) {
- print "Failed to replace servicePrincpalName:" + ok.errstr
- assertEquals(ok.error, 20)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
+""")
+ try:
+ ldb.modify_ldif("""
+dn: cn=ldaptest2computer,cn=computers,""" + base_dn + """
changetype: modify
add: servicePrincipalName
servicePrincipalName: host/ldaptest2computer
-")
-
-#LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
- if (ok.error != 20) {
- print "Expected error LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS, got :" + ok.errstr
- assertEquals(ok.error, 20)
- }
-
- print "Testing ranged results"
- ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
+""")
+ except LdbError, (num, msg):
+ assert num == 20, "Expected error LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS, got :" + msg
+
+ print "Testing ranged results"
+ ldb.modify_ldif("""
+dn: cn=ldaptest2computer,cn=computers,""" + base_dn + """
changetype: modify
replace: servicePrincipalName
-")
- if (ok.error != 0) {
- print "Failed to replace servicePrincpalName:" + ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptest2computer,cn=computers," + base_dn + "
+""")
+
+ ldb.modify_ldif("""
+dn: cn=ldaptest2computer,cn=computers,""" + base_dn + """
changetype: modify
add: servicePrincipalName
servicePrincipalName: host/ldaptest2computer0
@@ -198,1121 +169,766 @@ servicePrincipalName: host/ldaptest2computer26
servicePrincipalName: host/ldaptest2computer27
servicePrincipalName: host/ldaptest2computer28
servicePrincipalName: host/ldaptest2computer29
-")
-
- if (ok.error != 0) {
- print "Failed to replace servicePrincpalName:" + ok.errstr
- assertEquals(ok.error, 0)
- }
-
- res = ldb.search(base_dn, expression="(cn=ldaptest2computer))", scope=ldb.SCOPE_SUBTREE,
+""")
+
+ res = ldb.search(base_dn, expression="(cn=ldaptest2computer))", scope=ldb.SCOPE_SUBTREE,
attrs=["servicePrincipalName;range=0-*"])
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-# print res[0]["servicePrincipalName;range=0-*"].length
- assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
-
- attrs = ["servicePrincipalName;range=0-19"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-# print res[0]["servicePrincipalName;range=0-19"].length
- assertEquals(res[0]["servicePrincipalName;range=0-19"].length, 20)
-
- attrs = ["servicePrincipalName;range=0-30"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
-
- attrs = ["servicePrincipalName;range=0-40"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
-
- attrs = ["servicePrincipalName;range=30-40"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=30-*"].length, 0)
-
- attrs = ["servicePrincipalName;range=10-40"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=10-*"].length, 20)
-# pos_11 = res[0]["servicePrincipalName;range=10-*"][18]
-
- attrs = ["servicePrincipalName;range=11-40"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=11-*"].length, 19)
-# print res[0]["servicePrincipalName;range=11-*"][18]
-# print pos_11
-# assertEquals((res[0]["servicePrincipalName;range=11-*"][18]), pos_11)
-
- attrs = ["servicePrincipalName;range=11-15"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0]["servicePrincipalName;range=11-15"].length, 5)
-# assertEquals(res[0]["servicePrincipalName;range=11-15"][4], pos_11)
-
- attrs = ["servicePrincipalName"]
- res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (cn=ldaptest2computer)"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-# print res[0]["servicePrincipalName"][18]
-# print pos_11
- assertEquals(res[0]["servicePrincipalName"].length, 30)
-# assertEquals(res[0]["servicePrincipalName"][18], pos_11)
-
- ok = ldb.add({
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+# print res[0]["servicePrincipalName;range=0-*"].length
+ assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
+
+ attrs = ["servicePrincipalName;range=0-19"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+# print res[0]["servicePrincipalName;range=0-19"].length
+ assertEquals(res[0]["servicePrincipalName;range=0-19"].length, 20)
+
+ attrs = ["servicePrincipalName;range=0-30"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
+
+ attrs = ["servicePrincipalName;range=0-40"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=0-*"].length, 30)
+
+ attrs = ["servicePrincipalName;range=30-40"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=30-*"].length, 0)
+
+ attrs = ["servicePrincipalName;range=10-40"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=10-*"].length, 20)
+# pos_11 = res[0]["servicePrincipalName;range=10-*"][18]
+
+ attrs = ["servicePrincipalName;range=11-40"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=11-*"].length, 19)
+# print res[0]["servicePrincipalName;range=11-*"][18]
+# print pos_11
+# assertEquals((res[0]["servicePrincipalName;range=11-*"][18]), pos_11)
+
+ attrs = ["servicePrincipalName;range=11-15"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+ assertEquals(res[0]["servicePrincipalName;range=11-15"].length, 5)
+# assertEquals(res[0]["servicePrincipalName;range=11-15"][4], pos_11)
+
+ attrs = ["servicePrincipalName"]
+ res = ldb.search("(cn=ldaptest2computer))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (cn=ldaptest2computer)"
+# print res[0]["servicePrincipalName"][18]
+# print pos_11
+ assertEquals(res[0]["servicePrincipalName"].length, 30)
+# assertEquals(res[0]["servicePrincipalName"][18], pos_11)
+
+ try:
+ ldb.add({
"dn": "cn=ldaptestuser2,cn=useRs," + base_dn,
"objectClass": ["person", "user"],
"cn": "LDAPtestUSER2",
"givenname": "testy",
"sn": "ldap user2"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestuser2,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({
+ except LdbError:
+ ldb.delete("cn=ldaptestuser2,cn=users," + base_dn)
+ ldb.add({
"dn": "cn=ldaptestuser2,cn=useRs," + base_dn,
"objectClass": ["person", "user"],
"cn": "LDAPtestUSER2",
"givenname": "testy",
"sn": "ldap user2"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- print "Testing Ambigious Name Resolution"
+ print "Testing Ambigious Name Resolution"
# Testing ldb.search for (&(anr=ldap testy)(objectClass=user))
- res = ldb.search("(&(anr=ldap testy)(objectClass=user))")
- if (res.error != 0 || len(res) != 3) {
- print "Could not find (&(anr=ldap testy)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 3)
- }
+ res = ldb.search("(&(anr=ldap testy)(objectClass=user))")
+ assert len(res) == 3, "Could not find (&(anr=ldap testy)(objectClass=user))"
# Testing ldb.search for (&(anr=testy ldap)(objectClass=user))
- res = ldb.search("(&(anr=testy ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 2) {
- print "Found only " + len(res) + " for (&(anr=testy ldap)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 2)
- }
+ res = ldb.search("(&(anr=testy ldap)(objectClass=user))")
+ assert len(res) == 2, "Found only %d for (&(anr=testy ldap)(objectClass=user))" % len(res)
# Testing ldb.search for (&(anr=ldap)(objectClass=user))
- res = ldb.search("(&(anr=ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 4) {
- print "Found only " + len(res) + " for (&(anr=ldap)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 4)
- }
+ res = ldb.search("(&(anr=ldap)(objectClass=user))")
+ assert len(res) == 4, "Found only %d for (&(anr=ldap)(objectClass=user))" % len(res)
# Testing ldb.search for (&(anr==ldap)(objectClass=user))
- res = ldb.search("(&(anr==ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Found only " + len(res) + " for (&(anr=ldap)(objectClass=user))"
- print "Could not find (&(anr==ldap)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser")
- assertEquals(res[0].name, "ldaptestuser")
+ res = ldb.search("(&(anr==ldap)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(anr==ldap)(objectClass=user)). Found only %d for (&(anr=ldap)(objectClass=user))" % len(res)
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser")
+ assertEquals(res[0].name, "ldaptestuser")
# Testing ldb.search for (&(anr=testy)(objectClass=user))
- res = ldb.search("(&(anr=testy)(objectClass=user))")
- if (res.error != 0 || len(res) != 2) {
- print "Found only " + len(res) + " for (&(anr=testy)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 2)
- }
+ res = ldb.search("(&(anr=testy)(objectClass=user))")
+ assert len(res) == 2, "Found only %d for (&(anr=testy)(objectClass=user))" % len(res)
# Testing ldb.search for (&(anr=ldap testy)(objectClass=user))
- res = ldb.search("(&(anr=testy ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 2) {
- print "Found only " + len(res) + " for (&(anr=ldap testy)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 2)
- }
+ res = ldb.search("(&(anr=testy ldap)(objectClass=user))")
+ assert len(res) == 2, "Found only %d for (&(anr=ldap testy)(objectClass=user))" % len(res)
# Testing ldb.search for (&(anr==ldap testy)(objectClass=user))
- res = ldb.search("(&(anr==testy ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Found only " + len(res) + " for (&(anr==ldap testy)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
+ res = ldb.search("(&(anr==testy ldap)(objectClass=user))")
+ assert len(res) == 1, "Found only %d for (&(anr==ldap testy)(objectClass=user))" % len(res)
- assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser")
- assertEquals(res[0].name, "ldaptestuser")
+ assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser")
+ assertEquals(res[0].name, "ldaptestuser")
# Testing ldb.search for (&(anr==testy ldap)(objectClass=user))
- res = ldb.search("(&(anr==testy ldap)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(anr==testy ldap)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser")
- assertEquals(res[0].name, "ldaptestuser")
-
- # Testing ldb.search for (&(anr=testy ldap user)(objectClass=user))
- res = ldb.search("(&(anr=testy ldap user)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(anr=testy ldap user)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser2")
- assertEquals(res[0].name, "ldaptestuser2")
-
- # Testing ldb.search for (&(anr==testy ldap user2)(objectClass=user))
- res = ldb.search("(&(anr==testy ldap user2)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(anr==testy ldap user2)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser2")
- assertEquals(res[0].name, "ldaptestuser2")
-
- # Testing ldb.search for (&(anr==ldap user2)(objectClass=user))
- res = ldb.search("(&(anr==ldap user2)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(anr==ldap user2)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser2")
- assertEquals(res[0].name, "ldaptestuser2")
-
- # Testing ldb.search for (&(anr==not ldap user2)(objectClass=user))
- res = ldb.search("(&(anr==not ldap user2)(objectClass=user))")
- if (res.error != 0 || len(res) != 0) {
- print "Must not find (&(anr==not ldap user2)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 0)
- }
-
- # Testing ldb.search for (&(anr=not ldap user2)(objectClass=user))
- res = ldb.search("(&(anr=not ldap user2)(objectClass=user))")
- if (res.error != 0 || len(res) != 0) {
- print "Must not find (&(anr=not ldap user2)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 0)
- }
-
- print "Testing Group Modifies"
- ok = ldb.modify("
-dn: cn=ldaptestgroup,cn=users," + base_dn + "
+ res = ldb.search("(&(anr==testy ldap)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(anr==testy ldap)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser")
+ assertEquals(res[0].name, "ldaptestuser")
+
+ # Testing ldb.search for (&(anr=testy ldap user)(objectClass=user))
+ res = ldb.search("(&(anr=testy ldap user)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(anr=testy ldap user)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser2")
+ assertEquals(res[0].name, "ldaptestuser2")
+
+ # Testing ldb.search for (&(anr==testy ldap user2)(objectClass=user))
+ res = ldb.search("(&(anr==testy ldap user2)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(anr==testy ldap user2)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser2")
+ assertEquals(res[0].name, "ldaptestuser2")
+
+ # Testing ldb.search for (&(anr==ldap user2)(objectClass=user))
+ res = ldb.search("(&(anr==ldap user2)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(anr==ldap user2)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser2")
+ assertEquals(res[0].name, "ldaptestuser2")
+
+ # Testing ldb.search for (&(anr==not ldap user2)(objectClass=user))
+ res = ldb.search("(&(anr==not ldap user2)(objectClass=user))")
+ assert len(res) == 0, "Must not find (&(anr==not ldap user2)(objectClass=user))"
+
+ # Testing ldb.search for (&(anr=not ldap user2)(objectClass=user))
+ res = ldb.search("(&(anr=not ldap user2)(objectClass=user))")
+ assert len(res) == 0, "Must not find (&(anr=not ldap user2)(objectClass=user))"
+
+ print "Testing Group Modifies"
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup,cn=users,""" + base_dn + """
changetype: modify
add: member
-member: cn=ldaptestuser2,cn=users," + base_dn + "
-member: cn=ldaptestcomputer,cn=computers," + base_dn + "
-")
+member: cn=ldaptestuser2,cn=users,""" + base_dn + """
+member: cn=ldaptestcomputer,cn=computers,""" + base_dn + """
+""")
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
+ ldb.delete("cn=ldaptestuser3,cn=users," + base_dn)
- ok = ldb.delete("cn=ldaptestuser3,cn=users," + base_dn)
-
- print "Testing adding non-existent user to a group"
- ok = ldb.modify("
-dn: cn=ldaptestgroup,cn=users," + base_dn + "
+ print "Testing adding non-existent user to a group"
+ try:
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup,cn=users,""" + base_dn + """
changetype: modify
add: member
-member: cn=ldaptestuser3,cn=users," + base_dn + "
-")
- if (ok.error != 32) { # LDAP_NO_SUCH_OBJECT
- print ok.errstr
- assertEquals(ok.error, 32)
- }
-
- print "Testing Renames"
-
- ok = ldb.rename("cn=ldaptestuser2,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
- if (ok.error != 0) {
- print "Could not rename cn=ldaptestuser2,cn=users," + base_dn + " into cn=ldaptestuser3,cn=users," + base_dn + ": " + ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
- if (ok.error != 0) {
- print "Could not rename cn=ldaptestuser3,cn=users," + base_dn + " onto itself: " + ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestUSER3,cn=users," + base_dn)
- if (ok.error != 0) {
- print "Could not rename cn=ldaptestuser3,cn=users," + base_dn + " into cn=ldaptestUSER3,cn=users," + base_dn + ": " + ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestuser3)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestuser3)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestuser3)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestUSER3")
- assertEquals(res[0].name, "ldaptestUSER3")
+member: cn=ldaptestuser3,cn=users,""" + base_dn + """
+""")
+ except LdbError, (num, _):
+ assert num == 32
+ else:
+ assert False
+
+ print "Testing Renames"
+
+ ldb.rename("cn=ldaptestuser2,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
+
+ ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
+
+ ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestUSER3,cn=users," + base_dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestuser3)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestuser3)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestuser3)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestUSER3")
+ assertEquals(res[0].name, "ldaptestUSER3")
# This is a Samba special, and does not exist in real AD
-# print "Testing ldb.search for (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
-# res = ldb.search("(dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")")
-# if (res.error != 0 || len(res) != 1) {
-# print "Could not find (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
-# assertEquals(res.error, 0)
-# assertEquals(len(res), 1)
-# }
-# assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
-# assertEquals(res[0].cn, "ldaptestUSER3")
-# assertEquals(res[0].name, "ldaptestUSER3")
-
- print "Testing ldb.search for (distinguishedName=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
- res = ldb.search("(distinguishedName=CN=ldaptestUSER3,CN=Users," + base_dn + ")")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
- assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestUSER3")
- assertEquals(res[0].name, "ldaptestUSER3")
-
- # ensure we cannot add it again
- ok = ldb.add({"dn": "cn=ldaptestuser3,cn=userS," + base_dn,
+# print "Testing ldb.search for (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
+# res = ldb.search("(dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")")
+# if (res.error != 0 || len(res) != 1) {
+# print "Could not find (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
+# assertEquals(res.error, 0)
+# assertEquals(len(res), 1)
+# }
+# assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
+# assertEquals(res[0].cn, "ldaptestUSER3")
+# assertEquals(res[0].name, "ldaptestUSER3")
+
+ print "Testing ldb.search for (distinguishedName=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
+ res = ldb.search("(distinguishedName=CN=ldaptestUSER3,CN=Users," + base_dn + ")")
+ assert len(res) == 1, "Could not find (dn=CN=ldaptestUSER3,CN=Users," + base_dn + ")"
+ assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestUSER3")
+ assertEquals(res[0].name, "ldaptestUSER3")
+
+ # ensure we cannot add it again
+ try:
+ ldb.add({"dn": "cn=ldaptestuser3,cn=userS," + base_dn,
"objectClass": ["person", "user"],
"cn": "LDAPtestUSER3"})
-#LDB_ERR_ENTRY_ALREADY_EXISTS
- if (ok.error != 68) {
- print "expected error LDB_ERR_ENTRY_ALREADY_EXISTS, got: " + ok.errstr
- assertEquals(ok.error, 68)
- }
-
- # rename back
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser2,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- # ensure we cannnot rename it twice
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser2,cn=users," + base_dn)
+ except LdbError, (num, _):
+ assert num == 68 #LDB_ERR_ENTRY_ALREADY_EXISTS
+ else:
+ assert False
+
+ # rename back
+ ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser2,cn=users," + base_dn)
+
+ # ensure we cannnot rename it twice
+ ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser2,cn=users," + base_dn)
#LDB_ERR_NO_SUCH_OBJECT
- assertEquals(ok.error, 32)
+ assertEquals(ok.error, 32)
- # ensure can now use that name
- ok = ldb.add({"dn": "cn=ldaptestuser3,cn=users," + base_dn,
+ # ensure can now use that name
+ ok = ldb.add({"dn": "cn=ldaptestuser3,cn=users," + base_dn,
"objectClass": ["person", "user"],
"cn": "LDAPtestUSER3"})
-
- # ensure we now cannnot rename
- ok = ldb.rename("cn=ldaptestuser2,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
-#LDB_ERR_ENTRY_ALREADY_EXISTS
- if (ok.error != 68) {
- print "expected error LDB_ERR_ENTRY_ALREADY_EXISTS, got: " + ok.errstr
- assertEquals(ok.error, 68)
- }
- assertEquals(ok.error, 68)
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser3,cn=configuration," + base_dn)
- if (ok.error != 71 && ok.error != 64) {
- print "expected error LDB_ERR_ENTRY_ALREADY_EXISTS or LDAP_NAMING_VIOLATION, got: " + ok.errstr
- assertEquals(ok.error == 71 || ok.error, 64)
- }
- assertEquals(ok.error == 71 || ok.error, 64)
-
- ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser5,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.delete("cn=ldaptestuser5,cn=users," + base_dn)
-
- ok = ldb.delete("cn=ldaptestgroup2,cn=users," + base_dn)
-
- ok = ldb.rename("cn=ldaptestgroup,cn=users," + base_dn, "cn=ldaptestgroup2,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing subtree Renames"
-
- ok = ldb.add({"dn": "cn=ldaptestcontainer," + base_dn, "objectClass": "container"})
-
- ok = ldb.add({"dn": "CN=ldaptestuser4,CN=ldaptestcontainer," + base_dn,
- "objectClass": ["person", "user"],
- "cn": "LDAPtestUSER4"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestuser4,cn=ldaptestcontainer," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({"dn": "CN=ldaptestuser4,CN=ldaptestcontainer," + base_dn,
+
+ # ensure we now cannnot rename
+ try:
+ ldb.rename("cn=ldaptestuser2,cn=users," + base_dn, "cn=ldaptestuser3,cn=users," + base_dn)
+ except LdbError, (num, _):
+ assert num == 68 #LDB_ERR_ENTRY_ALREADY_EXISTS
+ else:
+ assert False
+ assertEquals(ok.error, 68)
+ try:
+ ok = ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser3,cn=configuration," + base_dn)
+ except LdbError, (num, _):
+ assert num in (71, 64)
+ else:
+ assert False
+
+ ldb.rename("cn=ldaptestuser3,cn=users," + base_dn, "cn=ldaptestuser5,cn=users," + base_dn)
+
+ ldb.delete("cn=ldaptestuser5,cn=users," + base_dn)
+
+ ldb.delete("cn=ldaptestgroup2,cn=users," + base_dn)
+
+ ldb.rename("cn=ldaptestgroup,cn=users," + base_dn, "cn=ldaptestgroup2,cn=users," + base_dn)
+
+ print "Testing subtree Renames"
+
+ ldb.add({"dn": "cn=ldaptestcontainer," + base_dn, "objectClass": "container"})
+
+ try:
+ ldb.add({"dn": "CN=ldaptestuser4,CN=ldaptestcontainer," + base_dn,
+ "objectClass": ["person", "user"],
+ "cn": "LDAPtestUSER4"})
+ except LdbError:
+ ldb.delete("cn=ldaptestuser4,cn=ldaptestcontainer," + base_dn)
+ ldb.add({"dn": "CN=ldaptestuser4,CN=ldaptestcontainer," + base_dn,
"objectClass": ["person", "user"],
"cn": "LDAPtestUSER4"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
add: member
-member: cn=ldaptestuser4,cn=ldaptestcontainer," + base_dn + "
-")
- if (ok.error != 0) {
- print "Failure adding ldaptestuser4 to a group"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.rename of cn=ldaptestcontainer," + base_dn + " to cn=ldaptestcontainer2," + base_dn
- ok = ldb.rename("CN=ldaptestcontainer," + base_dn, "CN=ldaptestcontainer2," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestuser4)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- print "Testing subtree ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in (just renamed from) cn=ldaptestcontainer," + base_dn
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer," + base_dn, ldb.SCOPE_SUBTREE)
- if (res.error != 32) {
- print res.errstr
- assertEquals(res.error, 32)
- }
-
- print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in (just renamed from) cn=ldaptestcontainer," + base_dn
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer," + base_dn, ldb.SCOPE_ONELEVEL)
- if (res.error != 32) {
- print res.errstr
- assertEquals(res.error, 32)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in renamed container"
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_SUBTREE)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestuser4)(objectClass=user)) under cn=ldaptestcontainer2," + base_dn
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn))
- assertEquals(strupper(res[0].memberOf[0]), strupper(("CN=ldaptestgroup2,CN=Users," + base_dn)))
-
- print "Testing ldb.search for (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group)) to check subtree renames and linked attributes"
- res = ldb.search("(&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group))", base_dn, ldb.SCOPE_SUBTREE)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group)), perhaps linked attributes are not conistant with subtree renames?"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- print "Testing ldb.rename (into itself) of cn=ldaptestcontainer2," + base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer2," + base_dn
- ok = ldb.rename("cn=ldaptestcontainer2," + base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer2," + base_dn)
- if (ok.error != 53) { # LDAP_UNWILLING_TO_PERFORM
- print ok.errstr
- assertEquals(ok.error, 53)
- }
-
- print "Testing ldb.rename (into non-existent container) of cn=ldaptestcontainer2," + base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer3," + base_dn
- ok = ldb.rename("cn=ldaptestcontainer2," + base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer3," + base_dn)
- if (ok.error != 53 && ok.error != 80) { # LDAP_UNWILLING_TO_PERFORM or LDAP_OTHER
- print ok.errstr
- assertEquals(ok.error == 53 || ok.error, 80)
- }
-
- print "Testing delete (should fail, not a leaf node) of renamed cn=ldaptestcontainer2," + base_dn
- ok = ldb.delete("cn=ldaptestcontainer2," + base_dn)
- if (ok.error != 66) { # LDB_ERR_NOT_ALLOWED_ON_NON_LEAF
- print ok.errstr
- assertEquals(ok.error, 66)
- }
-
- print "Testing base ldb.search for CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn
- res = ldb.search("(objectclass=*)", ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn), ldb.SCOPE_BASE)
- if (res.error == 0 && res.count == 1) {
- assertEquals(res.error == 0 && res.count, 1)
- }
- res = ldb.search("(cn=ldaptestuser40)", ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn), ldb.SCOPE_BASE)
- if (res.error == 0 && res.count == 0) {
- assertEquals(res.error == 0 && res.count, 0)
- }
-
- print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + base_dn
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_ONELEVEL)
- if (res.error == 0 && res.count == 0) {
- assertEquals(res.error == 0 && res.count, 0)
- }
-
- print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + base_dn
- res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_SUBTREE)
- if (res.error == 0 && res.count == 0) {
- assertEquals(res.error == 0 && res.count, 0)
- }
-
- print "Testing delete of subtree renamed "+("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn)
- ok = ldb.delete(("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn))
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- print "Testing delete of renamed cn=ldaptestcontainer2," + base_dn
- ok = ldb.delete("cn=ldaptestcontainer2," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.add({"dn": "cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({"dn": "cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- ok = ldb.add({"dn": "cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
- if (ok.error != 0) {
- ok = ldb.delete("cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- ok = ldb.add({"dn": "cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn,
+member: cn=ldaptestuser4,cn=ldaptestcontainer,""" + base_dn + """
+""")
+
+ print "Testing ldb.rename of cn=ldaptestcontainer," + base_dn + " to cn=ldaptestcontainer2," + base_dn
+ ldb.rename("CN=ldaptestcontainer," + base_dn, "CN=ldaptestcontainer2," + base_dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestuser4)(objectClass=user))"
+
+ print "Testing subtree ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in (just renamed from) cn=ldaptestcontainer," + base_dn
+ try:
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer," + base_dn, ldb.SCOPE_SUBTREE)
+ except LdbError, (num, _):
+ assert num == 32
+ else:
+ assert False
+
+ print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in (just renamed from) cn=ldaptestcontainer," + base_dn
+ try:
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer," + base_dn, ldb.SCOPE_ONELEVEL)
+ except LdbError, (num, _):
+ assert num == 32
+ else:
+ assert False
+
+ print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in renamed container"
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_SUBTREE)
+ assert len(res) == 1, "Could not find (&(cn=ldaptestuser4)(objectClass=user)) under cn=ldaptestcontainer2," + base_dn
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn))
+ assertEquals(strupper(res[0].memberOf[0]), strupper(("CN=ldaptestgroup2,CN=Users," + base_dn)))
+
+ print "Testing ldb.search for (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group)) to check subtree renames and linked attributes"
+ res = ldb.search("(&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group))", base_dn, ldb.SCOPE_SUBTREE)
+ assert len(res) == 1, "Could not find (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn + ")(objectclass=group)), perhaps linked attributes are not conistant with subtree renames?"
+
+ print "Testing ldb.rename (into itself) of cn=ldaptestcontainer2," + base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer2," + base_dn
+ try:
+ ok = ldb.rename("cn=ldaptestcontainer2," + base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer2," + base_dn)
+ except LdbError, (num, _):
+ assert num != 53 # LDAP_UNWILLING_TO_PERFORM
+ else:
+ assert False
+
+ print "Testing ldb.rename (into non-existent container) of cn=ldaptestcontainer2," + base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer3," + base_dn
+ try:
+ ldb.rename("cn=ldaptestcontainer2," + base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer3," + base_dn)
+ except LdbError, (num, _):
+ assert num in (53, 80)
+ else:
+ assert False
+
+ print "Testing delete (should fail, not a leaf node) of renamed cn=ldaptestcontainer2," + base_dn
+ try:
+ ok = ldb.delete("cn=ldaptestcontainer2," + base_dn)
+ except LdbError, (num, _):
+ assert num == 66
+ else:
+ assert False
+
+ print "Testing base ldb.search for CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn
+ res = ldb.search("(objectclass=*)", ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn), ldb.SCOPE_BASE)
+ assert len(res) == 1
+ res = ldb.search("(cn=ldaptestuser40)", ("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn), ldb.SCOPE_BASE)
+ assert len(res) == 0
+
+ print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + base_dn
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_ONELEVEL)
+ assert len(res) == 0
+
+ print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + base_dn
+ res = ldb.search("(&(cn=ldaptestuser4)(objectClass=user))", "cn=ldaptestcontainer2," + base_dn, ldb.SCOPE_SUBTREE)
+ assert len(res) == 0
+
+ print "Testing delete of subtree renamed "+("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn)
+ ldb.delete(("CN=ldaptestuser4,CN=ldaptestcontainer2," + base_dn))
+ print "Testing delete of renamed cn=ldaptestcontainer2," + base_dn
+ ldb.delete("cn=ldaptestcontainer2," + base_dn)
+
+ try:
+ ldb.add({"dn": "cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
+ except LdbError, (num, _):
+ ldb.delete("cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn)
+ ldb.add({"dn": "cn=ldaptestutf8user èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
+
+ try:
+ ldb.add({"dn": "cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn, "objectClass": "user"})
+ except LdbError, (num, _):
+ ldb.delete("cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn)
+ ldb.add({"dn": "cn=ldaptestutf8user2 èùéìòà ,cn=users," + base_dn,
"objectClass": "user"})
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
- }
-
- print "Testing ldb.search for (&(cn=ldaptestuser)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestuser)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser")
- assertEquals(res[0].name, "ldaptestuser")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "person")
- assertEquals(res[0].objectClass[2], "organizationalPerson")
- assertEquals(res[0].objectClass[3], "user")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
- assertEquals(res[0].objectCategory, ("CN=Person,CN=Schema,CN=Configuration," + base_dn))
- assertEquals(res[0].sAMAccountType, 805306368)
-# assertEquals(res[0].userAccountControl, 546)
- assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
- assertEquals(res[0].memberOf.length, 1)
+
+ print "Testing ldb.search for (&(cn=ldaptestuser)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestuser)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestuser)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser")
+ assertEquals(res[0].name, "ldaptestuser")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "person")
+ assertEquals(res[0].objectClass[2], "organizationalPerson")
+ assertEquals(res[0].objectClass[3], "user")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+ assertEquals(res[0].objectCategory, ("CN=Person,CN=Schema,CN=Configuration," + base_dn))
+ assertEquals(res[0].sAMAccountType, 805306368)
+# assertEquals(res[0].userAccountControl, 546)
+ assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
+ assertEquals(res[0].memberOf.length, 1)
- print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))"
- res2 = ldb.search("(&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))")
- if (res2.error != 0 || res2.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))"
- assertEquals(res2.error, 0)
- assertEquals(res2.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res2.msgs[0].dn)
-
- print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon))"
- res3 = ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))")
- if (res3.error != 0) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)): " + res3.errstr
- assertEquals(res3.error, 0)
- } else if (res3.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)): matched " + res3.msgs.length
- assertEquals(res3.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res3.msgs[0].dn)
-
- if (gc_ldb != undefined) {
- print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"
- res3gc = gc_ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))")
- if (res3gc.error != 0) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog: " + res3gc.errstr
- assertEquals(res3gc.error, 0)
- } else if (res3gc.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog: matched " + res3gc.msgs.length
- assertEquals(res3gc.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res3gc.msgs[0].dn)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in with 'phantom root' control"
- attrs = ["cn"]
- controls = ["search_options:1:2"]
- res3control = gc_ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
- if (res3control.error != 0 || res3control.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"
- assertEquals(res3control.error, 0)
- assertEquals(res3control.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res3control.msgs[0].dn)
-
- ok = ldb.delete(res[0].dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestcomputer)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestuser)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestcomputer,CN=Computers," + base_dn))
- assertEquals(res[0].cn, "ldaptestcomputer")
- assertEquals(res[0].name, "ldaptestcomputer")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "person")
- assertEquals(res[0].objectClass[2], "organizationalPerson")
- assertEquals(res[0].objectClass[3], "user")
- assertEquals(res[0].objectClass[4], "computer")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
- assertEquals(res[0].objectCategory, ("CN=Computer,CN=Schema,CN=Configuration," + base_dn))
- assertEquals(res[0].primaryGroupID, 513)
-# assertEquals(res[0].sAMAccountType, 805306368)
-# assertEquals(res[0].userAccountControl, 546)
- assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
- assertEquals(res[0].memberOf.length, 1)
-
- print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))"
- res2 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))")
- if (res2.error != 0 || res2.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))"
- assertEquals(res2.error, 0)
- assertEquals(res2.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res2.msgs[0].dn)
-
- if (gc_ldb != undefined) {
- print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"
- res2gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))")
- if (res2gc.error != 0 || res2gc.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"
- assertEquals(res2gc.error, 0)
- assertEquals(res2gc.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res2gc.msgs[0].dn)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER))"
- res3 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))")
- if (res3.error != 0 || res3.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER))"
- assertEquals(res3.error, 0)
- assertEquals(res3.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res3.msgs[0].dn)
-
- if (gc_ldb != undefined) {
- print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"
- res3gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))")
- if (res3gc.error != 0 || res3gc.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"
- assertEquals(res3gc.error, 0)
- assertEquals(res3gc.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res3gc.msgs[0].dn)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestcomp*r)(objectCategory=compuTER))"
- res4 = ldb.search("(&(cn=ldaptestcomp*r)(objectCategory=compuTER))")
- if (res4.error != 0 || res4.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomp*r)(objectCategory=compuTER))"
- assertEquals(res4.error, 0)
- assertEquals(res4.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res4.msgs[0].dn)
-
- print "Testing ldb.search for (&(cn=ldaptestcomput*)(objectCategory=compuTER))"
- res5 = ldb.search("(&(cn=ldaptestcomput*)(objectCategory=compuTER))")
- if (res5.error != 0 || res5.msgs.length != 1) {
- print "Could not find (&(cn=ldaptestcomput*)(objectCategory=compuTER))"
- assertEquals(res5.error, 0)
- assertEquals(res5.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res5.msgs[0].dn)
-
- print "Testing ldb.search for (&(cn=*daptestcomputer)(objectCategory=compuTER))"
- res6 = ldb.search("(&(cn=*daptestcomputer)(objectCategory=compuTER))")
- if (res6.error != 0 || res6.msgs.length != 1) {
- print "Could not find (&(cn=*daptestcomputer)(objectCategory=compuTER))"
- assertEquals(res6.error, 0)
- assertEquals(res6.msgs.length, 1)
- }
-
- assertEquals(res[0].dn, res6.msgs[0].dn)
-
- ok = ldb.delete(res[0].dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptest2computer)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptest2computer)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptest2computer)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptest2computer,CN=Computers," + base_dn))
- assertEquals(res[0].cn, "ldaptest2computer")
- assertEquals(res[0].name, "ldaptest2computer")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "person")
- assertEquals(res[0].objectClass[2], "organizationalPerson")
- assertEquals(res[0].objectClass[3], "user")
- assertEquals(res[0].objectClass[4], "computer")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
- assertEquals(res[0].objectCategory, "cn=Computer,cn=Schema,cn=Configuration," + base_dn)
- assertEquals(res[0].sAMAccountType, 805306369)
-# assertEquals(res[0].userAccountControl, 4098)
-
- ok = ldb.delete(res[0].dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
+ print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))"
+ res2 = ldb.search("(&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))")
+ assert len(res2) == 1, "Could not find (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + base_dn + "))"
+
+ assertEquals(res[0].dn, res2.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon))"
+ res3 = ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))")
+ assert len(res3) == 1, "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)): matched " + len(res3)
+
+ assertEquals(res[0].dn, res3.msgs[0].dn)
+
+ if gc_ldb is not None:
+ print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"
+ res3gc = gc_ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))")
+ assert len(res3gc) == 1
+
+ assertEquals(res[0].dn, res3gc.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in with 'phantom root' control"
+ attrs = ["cn"]
+ controls = ["search_options:1:2"]
+ res3control = gc_ldb.search("(&(cn=ldaptestuser)(objectCategory=PerSon))", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
+ assert len(res3control) == 1, "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"
+
+ assertEquals(res[0].dn, res3control.msgs[0].dn)
+
+ ldb.delete(res[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestcomputer)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestuser)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestcomputer,CN=Computers," + base_dn))
+ assertEquals(res[0].cn, "ldaptestcomputer")
+ assertEquals(res[0].name, "ldaptestcomputer")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "person")
+ assertEquals(res[0].objectClass[2], "organizationalPerson")
+ assertEquals(res[0].objectClass[3], "user")
+ assertEquals(res[0].objectClass[4], "computer")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+ assertEquals(res[0].objectCategory, ("CN=Computer,CN=Schema,CN=Configuration," + base_dn))
+ assertEquals(res[0].primaryGroupID, 513)
+# assertEquals(res[0].sAMAccountType, 805306368)
+# assertEquals(res[0].userAccountControl, 546)
+ assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
+ assertEquals(res[0].memberOf.length, 1)
+
+ print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))"
+ res2 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))")
+ assert len(res2) == 1, "Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))"
+
+ assertEquals(res[0].dn, res2.msgs[0].dn)
+
+ if gc_ldb is not None:
+ print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"
+ res2gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + "))")
+ assert len(res2gc) == 1, "Could not find (&(cn=ldaptestcomputer)(objectCategory=cn=computer,cn=schema,cn=configuration," + base_dn + ")) in Global Catlog"
+
+ assertEquals(res[0].dn, res2gc.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER))"
+ res3 = ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))")
+ assert len(res3) == 1, "Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER))"
+
+ assertEquals(res[0].dn, res3.msgs[0].dn)
+
+ if gc_ldb is not None:
+ print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"
+ res3gc = gc_ldb.search("(&(cn=ldaptestcomputer)(objectCategory=compuTER))")
+ assert len(res3gc) == 1, "Could not find (&(cn=ldaptestcomputer)(objectCategory=compuTER)) in Global Catalog"
+
+ assertEquals(res[0].dn, res3gc.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestcomp*r)(objectCategory=compuTER))"
+ res4 = ldb.search("(&(cn=ldaptestcomp*r)(objectCategory=compuTER))")
+ assert len(res4) == 1, "Could not find (&(cn=ldaptestcomp*r)(objectCategory=compuTER))"
+
+ assertEquals(res[0].dn, res4.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestcomput*)(objectCategory=compuTER))"
+ res5 = ldb.search("(&(cn=ldaptestcomput*)(objectCategory=compuTER))")
+ assert len(res5) == 1, "Could not find (&(cn=ldaptestcomput*)(objectCategory=compuTER))"
+
+ assertEquals(res[0].dn, res5.msgs[0].dn)
+
+ print "Testing ldb.search for (&(cn=*daptestcomputer)(objectCategory=compuTER))"
+ res6 = ldb.search("(&(cn=*daptestcomputer)(objectCategory=compuTER))")
+ assert len(res6) == 1, "Could not find (&(cn=*daptestcomputer)(objectCategory=compuTER))"
+
+ assertEquals(res[0].dn, res6.msgs[0].dn)
+
+ ldb.delete(res[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptest2computer)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptest2computer)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptest2computer)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptest2computer,CN=Computers," + base_dn))
+ assertEquals(res[0].cn, "ldaptest2computer")
+ assertEquals(res[0].name, "ldaptest2computer")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "person")
+ assertEquals(res[0].objectClass[2], "organizationalPerson")
+ assertEquals(res[0].objectClass[3], "user")
+ assertEquals(res[0].objectClass[4], "computer")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+ assertEquals(res[0].objectCategory, "cn=Computer,cn=Schema,cn=Configuration," + base_dn)
+ assertEquals(res[0].sAMAccountType, 805306369)
+# assertEquals(res[0].userAccountControl, 4098)
+
+ ldb.delete(res[0].dn)
attrs = ["cn", "name", "objectClass", "objectGUID", "whenCreated", "nTSecurityDescriptor", "memberOf"]
- print "Testing ldb.search for (&(cn=ldaptestUSer2)(objectClass=user))"
- res = ldb.search(base_dn, "(&(cn=ldaptestUSer2)(objectClass=user))", ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestUSer2)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestuser2")
- assertEquals(res[0].name, "ldaptestuser2")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "person")
- assertEquals(res[0].objectClass[2], "organizationalPerson")
- assertEquals(res[0].objectClass[3], "user")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
- assert(res[0].nTSecurityDescriptor != undefined)
- assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
-
- attrs = ["cn", "name", "objectClass", "objectGUID", "whenCreated", "nTSecurityDescriptor", "member"]
- print "Testing ldb.search for (&(cn=ldaptestgroup2)(objectClass=group))"
- res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestgroup2)(objectClass=group))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestgroup2")
- assertEquals(res[0].name, "ldaptestgroup2")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "group")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
- assert(res[0].nTSecurityDescriptor != undefined)
- assertEquals(res[0].member[0], ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].member.length, 1)
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+ print "Testing ldb.search for (&(cn=ldaptestUSer2)(objectClass=user))"
+ res = ldb.search(base_dn, "(&(cn=ldaptestUSer2)(objectClass=user))", ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (&(cn=ldaptestUSer2)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestuser2")
+ assertEquals(res[0].name, "ldaptestuser2")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "person")
+ assertEquals(res[0].objectClass[2], "organizationalPerson")
+ assertEquals(res[0].objectClass[3], "user")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+ assert(res[0].nTSecurityDescriptor != undefined)
+ assertEquals(res[0].memberOf[0], ("CN=ldaptestgroup2,CN=Users," + base_dn))
+
+ attrs = ["cn", "name", "objectClass", "objectGUID", "whenCreated", "nTSecurityDescriptor", "member"]
+ print "Testing ldb.search for (&(cn=ldaptestgroup2)(objectClass=group))"
+ res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) == 1, "Could not find (&(cn=ldaptestgroup2)(objectClass=group))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestgroup2")
+ assertEquals(res[0].name, "ldaptestgroup2")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "group")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+ assert(res[0].nTSecurityDescriptor != undefined)
+ assertEquals(res[0].member[0], ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].member.length, 1)
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
replace: member
-member: CN=ldaptestuser2,CN=Users," + base_dn + "
-member: CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn + "
-")
- if (ok.error != 0) {
- print "Failure testing replace of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing Linked attribute behaviours"
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+member: CN=ldaptestuser2,CN=Users,""" + base_dn + """
+member: CN=ldaptestutf8user èùéìòà,CN=Users,""" + base_dn + """
+""")
+
+ print "Testing Linked attribute behaviours"
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
delete: member
-")
- if (ok.error != 0) {
- print "Failure testing delete of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+""")
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
add: member
-member: CN=ldaptestuser2,CN=Users," + base_dn + "
-member: CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn + "
-")
- if (ok.error != 0) {
- print "Failure testing add of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+member: CN=ldaptestuser2,CN=Users,""" + base_dn + """
+member: CN=ldaptestutf8user èùéìòà,CN=Users,""" + base_dn + """
+""")
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
replace: member
-")
- if (ok.error != 0) {
- print "Failure testing replace of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+""")
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
add: member
-member: CN=ldaptestuser2,CN=Users," + base_dn + "
-member: CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn + "
-")
- if (ok.error != 0) {
- print "Failure testing add of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.modify("
-dn: cn=ldaptestgroup2,cn=users," + base_dn + "
+member: CN=ldaptestuser2,CN=Users,""" + base_dn + """
+member: CN=ldaptestutf8user èùéìòà,CN=Users,""" + base_dn + """
+""")
+
+ ldb.modify_ldif("""
+dn: cn=ldaptestgroup2,cn=users,""" + base_dn + """
changetype: modify
delete: member
-member: CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn + "
-")
- if (ok.error != 0) {
- print "Failure testing replace of linked attributes"
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestgroup2)(objectClass=group))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
- assertEquals(res[0].member[0], ("CN=ldaptestuser2,CN=Users," + base_dn))
- assertEquals(res[0].member.length, 1)
-
- ok = ldb.delete(("CN=ldaptestuser2,CN=Users," + base_dn))
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- attrs = ["cn", "name", "objectClass", "objectGUID", "whenCreated", "nTSecurityDescriptor", "member"]
- print "Testing ldb.search for (&(cn=ldaptestgroup2)(objectClass=group)) to check linked delete"
- res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestgroup2)(objectClass=group)) to check linked delete"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
- assertEquals(res[0].member, undefined)
-
- print "Testing ldb.search for (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))")
-
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- assertEquals(res[0].dn, ("CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn))
- assertEquals(res[0].cn, "ldaptestutf8user èùéìòà")
- assertEquals(res[0].name, "ldaptestutf8user èùéìòà")
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "person")
- assertEquals(res[0].objectClass[2], "organizationalPerson")
- assertEquals(res[0].objectClass[3], "user")
- assert(res[0].objectGUID != undefined)
- assert(res[0].whenCreated != undefined)
-
- ok = ldb.delete(res[0].dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestutf8user2*)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestutf8user2*)(objectClass=user))")
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (&(cn=ldaptestutf8user2*)(objectClass=user))"
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- }
-
- ok = ldb.delete(res[0].dn)
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- ok = ldb.delete(("CN=ldaptestgroup2,CN=Users," + base_dn))
- if (ok.error != 0) {
- print ok.errstr
- assertEquals(ok.error, 0)
- }
-
- print "Testing ldb.search for (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))"
- res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))")
-
- if (res.error != 0 || len(res) != 1) {
- print "Could not find (expect space collapse, win2k3 fails) (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))"
- } else {
- assertEquals(res[0].dn, ("cn=ldaptestutf8user2 èùéìòà,cn=users," + base_dn))
- assertEquals(res[0].cn, "ldaptestutf8user2 èùéìòà")
- }
-
- print "Testing that we can't get at the configuration DN from the main search base"
- attrs = ["cn"]
- res = ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- if (len(res) != 0) {
- print "Got configuration DN " + res[0].dn + " which should not be able to be seen from main search base"
- }
- assertEquals(len(res), 0)
-
- print "Testing that we can get at the configuration DN from the main search base on the LDAP port with the 'phantom root' search_options control"
- attrs = ["cn"]
- controls = ["search_options:1:2"]
- res = ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- if (gc_ldb != undefined) {
- print "Testing that we can get at the configuration DN from the main search base on the GC port with the search_options control == 0"
- attrs = ["cn"]
- controls = ["search_options:1:0"]
- res = gc_ldb.search("objectClass=crossRef", base_dn, gc_ldb.SCOPE_SUBTREE, attrs, controls)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- print "Testing that we do find configuration elements in the global catlog"
- attrs = ["cn"]
- res = gc_ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert (len(res) > 0)
-
- print "Testing that we do find configuration elements and user elements at the same time"
- attrs = ["cn"]
- res = gc_ldb.search("(|(objectClass=crossRef)(objectClass=person))", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert (len(res) > 0)
-
- print "Testing that we do find configuration elements in the global catlog, with the configuration basedn"
- attrs = ["cn"]
- res = gc_ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert (len(res) > 0)
- }
-
- print "Testing that we can get at the configuration DN on the main LDAP port"
- attrs = ["cn"]
- res = ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert (len(res) > 0)
-
- print "Testing objectCategory canonacolisation"
- attrs = ["cn"]
- res = ldb.search("objectCategory=ntDsDSA", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- if (len(res) == 0) {
- print "Didn't find any records with objectCategory=ntDsDSA"
- }
- assert(len(res) != 0)
-
- attrs = ["cn"]
- res = ldb.search("objectCategory=CN=ntDs-DSA," + schema_dn, configuration_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- if (len(res) == 0) {
- print "Didn't find any records with objectCategory=CN=ntDs-DSA," + schema_dn
- }
- assert(len(res) != 0)
-
- print "Testing objectClass attribute order on "+ base_dn
- attrs = ["objectClass"]
- res = ldb.search("objectClass=domain", base_dn, ldb.SCOPE_BASE, attrs)
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
-
- assertEquals(res[0].objectClass[0], "top")
- assertEquals(res[0].objectClass[1], "domain")
- assertEquals(res[0].objectClass[2], "domainDNS")
+member: CN=ldaptestutf8user èùéìòà,CN=Users,""" + base_dn + """
+""")
+
+ res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) != 1, "Could not find (&(cn=ldaptestgroup2)(objectClass=group))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
+ assertEquals(res[0].member[0], ("CN=ldaptestuser2,CN=Users," + base_dn))
+ assertEquals(res[0].member.length, 1)
+
+ ldb.delete(("CN=ldaptestuser2,CN=Users," + base_dn))
+
+ attrs = ["cn", "name", "objectClass", "objectGUID", "whenCreated", "nTSecurityDescriptor", "member"]
+ print "Testing ldb.search for (&(cn=ldaptestgroup2)(objectClass=group)) to check linked delete"
+ res = ldb.search("(&(cn=ldaptestgroup2)(objectClass=group))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assert len(res) != 1, "Could not find (&(cn=ldaptestgroup2)(objectClass=group)) to check linked delete"
+
+ assertEquals(res[0].dn, ("CN=ldaptestgroup2,CN=Users," + base_dn))
+ assertEquals(res[0].member, undefined)
+
+ print "Testing ldb.search for (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))"
+
+ assertEquals(res[0].dn, ("CN=ldaptestutf8user èùéìòà,CN=Users," + base_dn))
+ assertEquals(res[0].cn, "ldaptestutf8user èùéìòà")
+ assertEquals(res[0].name, "ldaptestutf8user èùéìòà")
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "person")
+ assertEquals(res[0].objectClass[2], "organizationalPerson")
+ assertEquals(res[0].objectClass[3], "user")
+ assert(res[0].objectGUID != undefined)
+ assert(res[0].whenCreated != undefined)
+
+ ldb.delete(res[0].dn)
+
+ print "Testing ldb.search for (&(cn=ldaptestutf8user2*)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestutf8user2*)(objectClass=user))")
+ assert len(res) == 1, "Could not find (&(cn=ldaptestutf8user2*)(objectClass=user))"
+
+ ldb.delete(res[0].dn)
+
+ ldb.delete(("CN=ldaptestgroup2,CN=Users," + base_dn))
+
+ print "Testing ldb.search for (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))"
+ res = ldb.search("(&(cn=ldaptestutf8user ÈÙÉÌÒÀ)(objectClass=user))")
+
+ assert len(res) == 1, "Could not find (expect space collapse, win2k3 fails) (&(cn=ldaptestutf8user2 ÈÙÉÌÒÀ)(objectClass=user))"
+
+ print "Testing that we can't get at the configuration DN from the main search base"
+ attrs = ["cn"]
+ res = ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert len(res) == 0, "Got configuration DN " + res[0].dn + " which should not be able to be seen from main search base"
+ assertEquals(len(res), 0)
+
+ print "Testing that we can get at the configuration DN from the main search base on the LDAP port with the 'phantom root' search_options control"
+ attrs = ["cn"]
+ controls = ["search_options:1:2"]
+ res = ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ if gc_ldb is not None:
+ print "Testing that we can get at the configuration DN from the main search base on the GC port with the search_options control == 0"
+ attrs = ["cn"]
+ controls = ["search_options:1:0"]
+ res = gc_ldb.search("objectClass=crossRef", base_dn, gc_ldb.SCOPE_SUBTREE, attrs, controls)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ print "Testing that we do find configuration elements in the global catlog"
+ attrs = ["cn"]
+ res = gc_ldb.search("objectClass=crossRef", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert (len(res) > 0)
+
+ print "Testing that we do find configuration elements and user elements at the same time"
+ attrs = ["cn"]
+ res = gc_ldb.search("(|(objectClass=crossRef)(objectClass=person))", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert (len(res) > 0)
+
+ print "Testing that we do find configuration elements in the global catlog, with the configuration basedn"
+ attrs = ["cn"]
+ res = gc_ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert (len(res) > 0)
+
+ print "Testing that we can get at the configuration DN on the main LDAP port"
+ attrs = ["cn"]
+ res = ldb.search("objectClass=crossRef", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert (len(res) > 0)
+
+ print "Testing objectCategory canonacolisation"
+ attrs = ["cn"]
+ res = ldb.search("objectCategory=ntDsDSA", configuration_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert len(res) > 0, "Didn't find any records with objectCategory=ntDsDSA"
+ assert(len(res) != 0)
+
+ attrs = ["cn"]
+ res = ldb.search("objectCategory=CN=ntDs-DSA," + schema_dn, configuration_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert len(res) > 0, "Didn't find any records with objectCategory=CN=ntDs-DSA," + schema_dn
+ assert(len(res) != 0)
+
+ print "Testing objectClass attribute order on "+ base_dn
+ attrs = ["objectClass"]
+ res = ldb.search("objectClass=domain", base_dn, ldb.SCOPE_BASE, attrs)
+ assertEquals(res.error, 0)
+ assertEquals(len(res), 1)
+
+ assertEquals(res[0].objectClass[0], "top")
+ assertEquals(res[0].objectClass[1], "domain")
+ assertEquals(res[0].objectClass[2], "domainDNS")
# check enumeration
- attrs = ["cn"]
- print "Testing ldb.search for objectCategory=person"
- res = ldb.search("objectCategory=person", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- attrs = ["cn"]
- controls = ["domain_scope:1"]
- print "Testing ldb.search for objectCategory=person with domain scope control"
- res = ldb.search("objectCategory=person", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
+ attrs = ["cn"]
+ print "Testing ldb.search for objectCategory=person"
+ res = ldb.search("objectCategory=person", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ attrs = ["cn"]
+ controls = ["domain_scope:1"]
+ print "Testing ldb.search for objectCategory=person with domain scope control"
+ res = ldb.search("objectCategory=person", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
- attrs = ["cn"]
- print "Testing ldb.search for objectCategory=user"
- res = ldb.search("objectCategory=user", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- attrs = ["cn"]
- controls = ["domain_scope:1"]
- print "Testing ldb.search for objectCategory=user with domain scope control"
- res = ldb.search("objectCategory=user", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- attrs = ["cn"]
- print "Testing ldb.search for objectCategory=group"
- res = ldb.search("objectCategory=group", base_dn, ldb.SCOPE_SUBTREE, attrs)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
- attrs = ["cn"]
- controls = ["domain_scope:1"]
- print "Testing ldb.search for objectCategory=group with domain scope control"
- res = ldb.search("objectCategory=group", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
- assertEquals(res.error, 0)
- assert(len(res) > 0)
-
-}
+ attrs = ["cn"]
+ print "Testing ldb.search for objectCategory=user"
+ res = ldb.search("objectCategory=user", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ attrs = ["cn"]
+ controls = ["domain_scope:1"]
+ print "Testing ldb.search for objectCategory=user with domain scope control"
+ res = ldb.search("objectCategory=user", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ attrs = ["cn"]
+ print "Testing ldb.search for objectCategory=group"
+ res = ldb.search("objectCategory=group", base_dn, ldb.SCOPE_SUBTREE, attrs)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
+
+ attrs = ["cn"]
+ controls = ["domain_scope:1"]
+ print "Testing ldb.search for objectCategory=group with domain scope control"
+ res = ldb.search("objectCategory=group", base_dn, ldb.SCOPE_SUBTREE, attrs, controls)
+ assertEquals(res.error, 0)
+ assert(len(res) > 0)
def basedn_tests(ldb, gc_ldb):
- print "Testing for all rootDSE attributes"
- attrs = []
- res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
-
- print "Testing for highestCommittedUSN"
- attrs = ["highestCommittedUSN"]
- res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
- assertEquals(res.error, 0)
- assertEquals(len(res), 1)
- assert(res[0].highestCommittedUSN != undefined)
- assert(res[0].highestCommittedUSN != 0)
-
- print "Testing for netlogon via LDAP"
- attrs = ["netlogon"]
- res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
- assertEquals(res.error, 0)
- assertEquals(len(res), 0)
-
- print "Testing for netlogon and highestCommittedUSN via LDAP"
- attrs = ["netlogon", "highestCommittedUSN"]
- res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
- assertEquals(res.error, 0)
- assertEquals(len(res), 0)
+ print "Testing for all rootDSE attributes"
+ attrs = []
+ res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
+ assertEquals(res.error, 0)
+ assertEquals(len(res), 1)
+
+ print "Testing for highestCommittedUSN"
+ attrs = ["highestCommittedUSN"]
+ res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
+ assertEquals(res.error, 0)
+ assertEquals(len(res), 1)
+ assert(res[0].highestCommittedUSN != undefined)
+ assert(res[0].highestCommittedUSN != 0)
+
+ print "Testing for netlogon via LDAP"
+ attrs = ["netlogon"]
+ res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
+ assertEquals(res.error, 0)
+ assertEquals(len(res), 0)
+
+ print "Testing for netlogon and highestCommittedUSN via LDAP"
+ attrs = ["netlogon", "highestCommittedUSN"]
+ res = ldb.search("", "", ldb.SCOPE_BASE, attrs)
+ assertEquals(res.error, 0)
+ assertEquals(len(res), 0)
def find_basedn(ldb):
attrs = ["defaultNamingContext"]
@@ -1334,11 +950,8 @@ def find_schemadn(ldb):
assertEquals(len(res), 1)
return res[0].schemaNamingContext
-# use command line creds if available
-ldb.credentials = options.get_credentials()
-gc_ldb.credentials = options.get_credentials()
-ok = ldb.connect("ldap://" + host)
+ldb = Ldb("ldap://%s" % host, credentials=creds, session_info=system_session())
base_dn = find_basedn(ldb)
configuration_dn = find_configurationdn(ldb)
@@ -1346,10 +959,8 @@ schema_dn = find_schemadn(ldb)
print "baseDN: %s\n" % base_dn
-ok = gc_ldb.connect("ldap://" + host + ":3268")
-if (!ok) {
- gc_ldb = undefined
-}
+gc_ldb = Ldb("ldap://%s:3268" % host, credentials=creds,
+ session_info=system_session())
basic_tests(ldb, gc_ldb, base_dn, configuration_dn, schema_dn)
basedn_tests(ldb, gc_ldb)