⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldap.py

📁 samba最新软件
💻 PY
📖 第 1 页 / 共 3 页
字号:
        # Testing ldb.search for (&(anr=testy ldap user)(objectClass=user))        res = ldb.search(expression="(&(anr=testy ldap user)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(anr=testy ldap user)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestuser2,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestuser2")        self.assertEquals(res[0]["name"], "ldaptestuser2")        # Testing ldb.search for (&(anr==testy ldap user2)(objectClass=user))        res = ldb.search(expression="(&(anr==testy ldap user2)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(anr==testy ldap user2)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestuser2,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestuser2")        self.assertEquals(res[0]["name"], "ldaptestuser2")        # Testing ldb.search for (&(anr==ldap user2)(objectClass=user))        res = ldb.search(expression="(&(anr==ldap user2)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(anr==ldap user2)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestuser2,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestuser2")        self.assertEquals(res[0]["name"], "ldaptestuser2")        # Testing ldb.search for (&(anr==not ldap user2)(objectClass=user))        res = ldb.search(expression="(&(anr==not ldap user2)(objectClass=user))")        self.assertEquals(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(expression="(&(anr=not ldap user2)(objectClass=user))")        self.assertEquals(len(res), 0, "Must not find (&(anr=not ldap user2)(objectClass=user))")        print "Testing Group Modifies"        ldb.modify_ldif("""dn: cn=ldaptestgroup,cn=users,""" + self.base_dn + """changetype: modifyadd: membermember: cn=ldaptestuser2,cn=users,""" + self.base_dn + """member: cn=ldaptestcomputer,cn=computers,""" + self.base_dn + """""")        self.delete_force(ldb, "cn=ldaptestuser3,cn=users," + self.base_dn)        print "Testing adding non-existent user to a group"        try:            ldb.modify_ldif("""dn: cn=ldaptestgroup,cn=users,""" + self.base_dn + """changetype: modifyadd: membermember: cn=ldaptestuser3,cn=users,""" + self.base_dn + """""")            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_NO_SUCH_OBJECT)        print "Testing Renames"        ldb.rename("cn=ldaptestuser2,cn=users," + self.base_dn, "cn=ldaptestuser3,cn=users," + self.base_dn)        ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn, "cn=ldaptestuser3,cn=users," + self.base_dn)        ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn, "cn=ldaptestUSER3,cn=users," + self.base_dn)        print "Testing ldb.search for (&(cn=ldaptestuser3)(objectClass=user))"        res = ldb.search(expression="(&(cn=ldaptestuser3)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(cn=ldaptestuser3)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestUSER3,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestUSER3")        self.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," + self.base_dn + ")"        #    res = ldb.search("(dn=CN=ldaptestUSER3,CN=Users," + self.base_dn + ")")        #    if (res.error != 0 || len(res) != 1) {        #        print "Could not find (dn=CN=ldaptestUSER3,CN=Users," + self.base_dn + ")"        #        self.assertEquals(len(res), 1)        #    }        #    self.assertEquals(res[0].dn, ("CN=ldaptestUSER3,CN=Users," + self.base_dn))        #    self.assertEquals(res[0].cn, "ldaptestUSER3")        #    self.assertEquals(res[0].name, "ldaptestUSER3")        print "Testing ldb.search for (distinguishedName=CN=ldaptestUSER3,CN=Users," + self.base_dn + ")"        res = ldb.search(expression="(distinguishedName=CN=ldaptestUSER3,CN=Users," + self.base_dn + ")")        self.assertEquals(len(res), 1, "Could not find (dn=CN=ldaptestUSER3,CN=Users," + self.base_dn + ")")        self.assertEquals(str(res[0].dn), ("CN=ldaptestUSER3,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestUSER3")        self.assertEquals(res[0]["name"], "ldaptestUSER3")        # ensure we cannot add it again        try:            ldb.add({"dn": "cn=ldaptestuser3,cn=userS," + self.base_dn,                      "objectClass": ["person", "user"],                      "cn": "LDAPtestUSER3"})            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_ENTRY_ALREADY_EXISTS)        # rename back        ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn, "cn=ldaptestuser2,cn=users," + self.base_dn)        # ensure we cannnot rename it twice        try:            ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn,                        "cn=ldaptestuser2,cn=users," + self.base_dn)            self.fail()        except LdbError, (num, _):             self.assertEquals(num, LDB_ERR_NO_SUCH_OBJECT)        # ensure can now use that name        ldb.add({"dn": "cn=ldaptestuser3,cn=users," + self.base_dn,                      "objectClass": ["person", "user"],                      "cn": "LDAPtestUSER3"})                # ensure we now cannnot rename        try:            ldb.rename("cn=ldaptestuser2,cn=users," + self.base_dn, "cn=ldaptestuser3,cn=users," + self.base_dn)            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_ENTRY_ALREADY_EXISTS)        try:            ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn, "cn=ldaptestuser3,cn=configuration," + self.base_dn)            self.fail()        except LdbError, (num, _):            self.assertTrue(num in (71, 64))        ldb.rename("cn=ldaptestuser3,cn=users," + self.base_dn, "cn=ldaptestuser5,cn=users," + self.base_dn)        ldb.delete("cn=ldaptestuser5,cn=users," + self.base_dn)        self.delete_force(ldb, "cn=ldaptestgroup2,cn=users," + self.base_dn)        ldb.rename("cn=ldaptestgroup,cn=users," + self.base_dn, "cn=ldaptestgroup2,cn=users," + self.base_dn)        print "Testing subtree Renames"        ldb.add({"dn": "cn=ldaptestcontainer," + self.base_dn,                  "objectClass": "container"})                self.delete_force(self.ldb, "cn=ldaptestuser4,cn=ldaptestcontainer," + self.base_dn)        ldb.add({"dn": "CN=ldaptestuser4,CN=ldaptestcontainer," + self.base_dn,                  "objectClass": ["person", "user"],                 "cn": "LDAPtestUSER4"})        ldb.modify_ldif("""dn: cn=ldaptestgroup2,cn=users,""" + self.base_dn + """changetype: modifyadd: membermember: cn=ldaptestuser4,cn=ldaptestcontainer,""" + self.base_dn + """""")                print "Testing ldb.rename of cn=ldaptestcontainer," + self.base_dn + " to cn=ldaptestcontainer2," + self.base_dn        ldb.rename("CN=ldaptestcontainer," + self.base_dn, "CN=ldaptestcontainer2," + self.base_dn)        print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user))"        res = ldb.search(expression="(&(cn=ldaptestuser4)(objectClass=user))")        self.assertEquals(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," + self.base_dn        try:            ldb.search("cn=ldaptestcontainer," + self.base_dn,                     expression="(&(cn=ldaptestuser4)(objectClass=user))",                     scope=SCOPE_SUBTREE)            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_NO_SUCH_OBJECT)        print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in (just renamed from) cn=ldaptestcontainer," + self.base_dn        try:            res = ldb.search("cn=ldaptestcontainer," + self.base_dn,                     expression="(&(cn=ldaptestuser4)(objectClass=user))", scope=SCOPE_ONELEVEL)            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_NO_SUCH_OBJECT)        print "Testing ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in renamed container"        res = ldb.search("cn=ldaptestcontainer2," + self.base_dn, expression="(&(cn=ldaptestuser4)(objectClass=user))", scope=SCOPE_SUBTREE)        self.assertEquals(len(res), 1, "Could not find (&(cn=ldaptestuser4)(objectClass=user)) under cn=ldaptestcontainer2," + self.base_dn)        self.assertEquals(str(res[0].dn), ("CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn))        self.assertEquals(res[0]["memberOf"][0].upper(), ("CN=ldaptestgroup2,CN=Users," + self.base_dn).upper())        print "Testing ldb.search for (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn + ")(objectclass=group)) to check subtree renames and linked attributes"        res = ldb.search(self.base_dn, expression="(&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn + ")(objectclass=group))", scope=SCOPE_SUBTREE)        self.assertEquals(len(res), 1, "Could not find (&(member=CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn + ")(objectclass=group)), perhaps linked attributes are not conistant with subtree renames?")        print "Testing ldb.rename (into itself) of cn=ldaptestcontainer2," + self.base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer2," + self.base_dn        try:            ldb.rename("cn=ldaptestcontainer2," + self.base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer2," + self.base_dn)            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_UNWILLING_TO_PERFORM)        print "Testing ldb.rename (into non-existent container) of cn=ldaptestcontainer2," + self.base_dn + " to cn=ldaptestcontainer,cn=ldaptestcontainer3," + self.base_dn        try:            ldb.rename("cn=ldaptestcontainer2," + self.base_dn, "cn=ldaptestcontainer,cn=ldaptestcontainer3," + self.base_dn)            self.fail()        except LdbError, (num, _):            self.assertTrue(num in (LDB_ERR_UNWILLING_TO_PERFORM, LDB_ERR_OTHER))        print "Testing delete (should fail, not a leaf node) of renamed cn=ldaptestcontainer2," + self.base_dn        try:            ldb.delete("cn=ldaptestcontainer2," + self.base_dn)            self.fail()        except LdbError, (num, _):            self.assertEquals(num, LDB_ERR_NOT_ALLOWED_ON_NON_LEAF)        print "Testing base ldb.search for CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn        res = ldb.search(expression="(objectclass=*)", base=("CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn), scope=SCOPE_BASE)        self.assertEquals(len(res), 1)        res = ldb.search(expression="(cn=ldaptestuser40)", base=("CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn), scope=SCOPE_BASE)        self.assertEquals(len(res), 0)        print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + self.base_dn        res = ldb.search(expression="(&(cn=ldaptestuser4)(objectClass=user))", base=("cn=ldaptestcontainer2," + self.base_dn), scope=SCOPE_ONELEVEL)        # FIXME: self.assertEquals(len(res), 0)        print "Testing one-level ldb.search for (&(cn=ldaptestuser4)(objectClass=user)) in cn=ldaptestcontainer2," + self.base_dn        res = ldb.search(expression="(&(cn=ldaptestuser4)(objectClass=user))", base=("cn=ldaptestcontainer2," + self.base_dn), scope=SCOPE_SUBTREE)        # FIXME: self.assertEquals(len(res), 0)        print "Testing delete of subtree renamed "+("CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn)        ldb.delete(("CN=ldaptestuser4,CN=ldaptestcontainer2," + self.base_dn))        print "Testing delete of renamed cn=ldaptestcontainer2," + self.base_dn        ldb.delete("cn=ldaptestcontainer2," + self.base_dn)                self.delete_force(self.ldb, "cn=ldaptestutf8user 猫霉茅矛貌脿 ,cn=users," + self.base_dn)        ldb.add({"dn": "cn=ldaptestutf8user 猫霉茅矛貌脿 ,cn=users," + self.base_dn, "objectClass": "user"})        self.delete_force(self.ldb, "cn=ldaptestutf8user2  猫霉茅矛貌脿 ,cn=users," + self.base_dn)        ldb.add({"dn": "cn=ldaptestutf8user2  猫霉茅矛貌脿 ,cn=users," + self.base_dn, "objectClass": "user"})        print "Testing ldb.search for (&(cn=ldaptestuser)(objectClass=user))"        res = ldb.search(expression="(&(cn=ldaptestuser)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(cn=ldaptestuser)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestuser,CN=Users," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestuser")        self.assertEquals(res[0]["name"], "ldaptestuser")        self.assertEquals(res[0]["objectClass"], ["top", "person", "organizationalPerson", "user"])        self.assertTrue("objectGUID" in res[0])        self.assertTrue("whenCreated" in res[0])        self.assertEquals(res[0]["objectCategory"], ("CN=Person,CN=Schema,CN=Configuration," + self.base_dn))        self.assertEquals(int(res[0]["sAMAccountType"][0]), 805306368)        # self.assertEquals(res[0].userAccountControl, 546)        self.assertEquals(res[0]["memberOf"][0], ("CN=ldaptestgroup2,CN=Users," + self.base_dn))        self.assertEquals(len(res[0]["memberOf"]), 1)             print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + self.base_dn + "))"        res2 = ldb.search(expression="(&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + self.base_dn + "))")        self.assertEquals(len(res2), 1, "Could not find (&(cn=ldaptestuser)(objectCategory=cn=person,cn=schema,cn=configuration," + self.base_dn + "))")        self.assertEquals(res[0].dn, res2[0].dn)        print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon))"        res3 = ldb.search(expression="(&(cn=ldaptestuser)(objectCategory=PerSon))")        self.assertEquals(len(res3), 1, "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)): matched %d" % len(res3))        self.assertEquals(res[0].dn, res3[0].dn)        if gc_ldb is not None:            print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog"            res3gc = gc_ldb.search(expression="(&(cn=ldaptestuser)(objectCategory=PerSon))")            self.assertEquals(len(res3gc), 1)                    self.assertEquals(res[0].dn, res3gc[0].dn)        print "Testing ldb.search for (&(cn=ldaptestuser)(objectCategory=PerSon)) in with 'phantom root' control"                res3control = gc_ldb.search(self.base_dn, expression="(&(cn=ldaptestuser)(objectCategory=PerSon))", scope=SCOPE_SUBTREE, attrs=["cn"], controls=["search_options:1:2"])        self.assertEquals(len(res3control), 1, "Could not find (&(cn=ldaptestuser)(objectCategory=PerSon)) in Global Catalog")                self.assertEquals(res[0].dn, res3control[0].dn)        ldb.delete(res[0].dn)        print "Testing ldb.search for (&(cn=ldaptestcomputer)(objectClass=user))"        res = ldb.search(expression="(&(cn=ldaptestcomputer)(objectClass=user))")        self.assertEquals(len(res), 1, "Could not find (&(cn=ldaptestuser)(objectClass=user))")        self.assertEquals(str(res[0].dn), ("CN=ldaptestcomputer,CN=Computers," + self.base_dn))        self.assertEquals(res[0]["cn"], "ldaptestcomputer")        self.assertEquals(res[0]["name"], "ldaptestcomputer")        self.assertEquals(res[0]["objectClass"], ["top", "person", "organizationalPerson", "user", "computer"])        self.assertTrue("objectGUID" in res[0])        self.assertTrue("whenCreated" in res[0])        self.assertEquals(res[0]["objectCategory"], ("CN=Computer,CN=Schema,CN=Configuration," + self.base_dn))        self.assertEquals(int(res[0]["primaryGroupID"][0]), 513)        # self.assertEquals(res[0].sAMAccountType, 805306368)        # self.assertEquals(res[0].userAccountControl, 546)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -