From 9c5490c9298aa29d9deb76702f21dd8f0d5b9902 Mon Sep 17 00:00:00 2001 From: Nadezhda Ivanova Date: Sun, 31 Oct 2010 23:29:29 +0200 Subject: [PATCH] s4-dsdb: Tests for dSHeuristics attribute --- source4/dsdb/tests/python/ldap.py | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/source4/dsdb/tests/python/ldap.py b/source4/dsdb/tests/python/ldap.py index d713056776f..5c7ea8dae55 100755 --- a/source4/dsdb/tests/python/ldap.py +++ b/source4/dsdb/tests/python/ldap.py @@ -89,6 +89,17 @@ class BasicTests(unittest.TestCase): res = self.ldb.search(base=self.base_dn, expression="(objectClass=*)", scope=SCOPE_BASE) return ndr_unpack( security.dom_sid,res[0]["objectSid"][0]) + def set_dsheuristics(self, dsheuristics): + m = Message() + m.dn = Dn(self.ldb, "CN=Directory Service, CN=Windows NT, CN=Services, " + + self.configuration_dn) + if dsheuristics is not None: + m["dSHeuristics"] = MessageElement(dsheuristics, FLAG_MOD_REPLACE, + "dSHeuristics") + else: + m["dSHeuristics"] = MessageElement([], FLAG_MOD_DELETE, "dsHeuristics") + self.ldb.modify(m) + def setUp(self): super(BasicTests, self).setUp() self.ldb = ldb @@ -2471,6 +2482,36 @@ nTSecurityDescriptor:: """ + desc_base64 finally: self.delete_force(self.ldb, user_dn) + def test_dsheuristics(self): + """Tests the 'dSHeuristics' attribute""" + print "Tests the 'dSHeuristics' attribute""" + + # Get the current value to restore it later + res = self.ldb.search("CN=Directory Service, CN=Windows NT, CN=Services, " + + self.configuration_dn, scope=SCOPE_BASE, attrs=["dSHeuristics"]) + if "dSHeuristics" in res[0]: + dsheuristics = res[0]["dSHeuristics"][0] + else: + dsheuristics = None + # Should not be longer than 18 chars? + try: + self.set_dsheuristics("123ABC-+!1asdfg@#^12") + except LdbError, (num, _): + self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) + # If it is >= 10 chars, tenthChar should be 1 + try: + self.set_dsheuristics("00020000000002") + except LdbError, (num, _): + self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) + # apart from the above, all char values are accepted + self.set_dsheuristics("123ABC-+!1asdfg@#^") + res = self.ldb.search("CN=Directory Service, CN=Windows NT, CN=Services, " + + self.configuration_dn, scope=SCOPE_BASE, attrs=["dSHeuristics"]) + self.assertTrue("dSHeuristics" in res[0]) + self.assertEquals(res[0]["dSHeuristics"][0], "123ABC-+!1asdfg@#^") + # restore old value + self.set_dsheuristics(dsheuristics) + class BaseDnTests(unittest.TestCase): -- 2.34.1