From 2f8a1d8527782135726249c5636ddce03a05407d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 6 Oct 2008 09:22:45 +0200 Subject: [PATCH] TODO python linked attribute tests... metze --- source4/lib/ldb/tests/python/ldap.py | 229 ++++++++++++++++++++++++++- 1 file changed, 224 insertions(+), 5 deletions(-) diff --git a/source4/lib/ldb/tests/python/ldap.py b/source4/lib/ldb/tests/python/ldap.py index 6c910b63f1b4..72ec372e107c 100755 --- a/source4/lib/ldb/tests/python/ldap.py +++ b/source4/lib/ldb/tests/python/ldap.py @@ -1001,6 +1001,223 @@ class SchemaTests(unittest.TestCase): self.assertFalse("dITContentRules" in res[0]) self.assertFalse("objectClasses" in res[0]) self.assertFalse("attributeTypes" in res[0]) + +class LinkedAttributesTests(unittest.TestCase): + def delete_force(self, ldb, dn): + try: + ldb.delete(dn) + except LdbError, (num, _): + self.assertEquals(num, LDB_ERR_NO_SUCH_OBJECT) + + def setUp(self): + self.ldb = ldb + res = ldb.search(base="", expression="", scope=SCOPE_BASE, attrs=["*"]) + self.assertEquals(len(res), 1) + self.default_dn = res[0]["defaultNamingContext"][0] + self.config_dn = res[0]["configurationNamingContext"][0] + self.schema_dn = res[0]["schemaNamingContext"][0] + self.testdn = "cn=torturetests," + self.default_dn + + def test_generated_linked1(self): + """Testing we can add reference (skip)""" + if 1: return + self.delete_force(self.ldb, self.testdn) + + self.ldb.add({"dn": "" + self.testdn, + "objectclass": "container"}) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +replace: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 1) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +replace: msDS-ObjectReference +msDs-ObjectReference: """ + self.config_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 1) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.config_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +replace: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 1) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.default_dn) + + try: + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +""") + self.fail() + except LdbError, (num, msg): + self.assertEquals(num, LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.config_dn + """ +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.schema_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 3) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.schema_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][1], self.config_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][2], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +delete: msDS-ObjectReference +msDs-ObjectReference: """ + self.config_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 2) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.schema_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][1], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +delete: msDS-ObjectReference +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertTrue("msDs-ObjectReference" not in res[0]) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.config_dn + """ +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.schema_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 3) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.schema_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][1], self.config_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][2], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +delete: msDS-ObjectReference +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertTrue("msDs-ObjectReference" not in res[0]) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +msDs-ObjectReference: """ + self.config_dn + """ +msDs-ObjectReference: """ + self.schema_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 3) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.schema_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][1], self.config_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][2], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +delete: msDS-ObjectReference +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertTrue("msDs-ObjectReference" not in res[0]) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.schema_dn + """ +msDs-ObjectReference: """ + self.config_dn + """ +msDs-ObjectReference: """ + self.default_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 3) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.schema_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][1], self.config_dn) + self.assertEquals(res[0]["msDs-ObjectReference"][2], self.default_dn) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +delete: msDS-ObjectReference +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertTrue("msDs-ObjectReference" not in res[0]) + + self.delete_force(self.ldb, self.testdn) + + def test_generated_linked2(self): + """Testing we can add reference2""" + + self.delete_force(self.ldb, self.testdn) + + self.ldb.add({"dn": "" + self.testdn, + "objectclass": "container", + "msDs-ObjectReference": "" + self.default_dn}) + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 1) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.default_dn) + + try: + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +add: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +""") + self.fail() + except LdbError, (num, msg): + self.assertEquals(num, LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS) + + self.ldb.modify_ldif(""" +dn: """ + self.testdn + """ +changetype: modify +replace: msDS-ObjectReference +msDs-ObjectReference: """ + self.default_dn + """ +""") + res = self.ldb.search(base=self.testdn, expression="", scope=SCOPE_BASE, attrs=["msDs-ObjectReference"]) + self.assertEquals(len(res), 1) + self.assertEquals(len(res[0]["msDs-ObjectReference"]), 1) + self.assertEquals(res[0]["msDs-ObjectReference"][0], self.default_dn) + + self.delete_force(self.ldb, self.testdn) if not "://" in host: host = "ldap://%s" % host @@ -1011,10 +1228,12 @@ gc_ldb = Ldb("%s:3268" % host, credentials=creds, runner = SubunitTestRunner() rc = 0 -if not runner.run(unittest.makeSuite(BaseDnTests)).wasSuccessful(): - rc = 1 -if not runner.run(unittest.makeSuite(BasicTests)).wasSuccessful(): - rc = 1 -if not runner.run(unittest.makeSuite(SchemaTests)).wasSuccessful(): +#if not runner.run(unittest.makeSuite(BaseDnTests)).wasSuccessful(): +# rc = 1 +#if not runner.run(unittest.makeSuite(BasicTests)).wasSuccessful(): +# rc = 1 +#if not runner.run(unittest.makeSuite(SchemaTests)).wasSuccessful(): +# rc = 1 +if not runner.run(unittest.makeSuite(LinkedAttributesTests)).wasSuccessful(): rc = 1 sys.exit(rc) -- 2.34.1