From: Douglas Bagnall Date: Fri, 12 Apr 2019 04:09:55 +0000 (+1200) Subject: dsdb/pytest/ldap: revive commented out test for attr size range X-Git-Tag: tdb-1.4.1~235 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5a0df7aec6bd37c7f9ce0b0ed5758da7a4977ee2;p=thirdparty%2Fsamba.git dsdb/pytest/ldap: revive commented out test for attr size range The test was presumably commented out because we fail it, and known-failing it would have hidden the attr-too-short tests that it was bundled with. If we disentangle them we can knwn-fail it, which serves as a TODO list. (passes against WIN2012R2). Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- diff --git a/selftest/knownfail.d/ldap b/selftest/knownfail.d/ldap new file mode 100644 index 00000000000..5bb01bc38bf --- /dev/null +++ b/selftest/knownfail.d/ldap @@ -0,0 +1,2 @@ +# the attributes too long test returns the wrong error +^samba4.ldap.python.+test_attribute_ranges_too_long \ No newline at end of file diff --git a/source4/dsdb/tests/python/ldap.py b/source4/dsdb/tests/python/ldap.py index 1d4b19adcbc..52e1795f0bb 100755 --- a/source4/dsdb/tests/python/ldap.py +++ b/source4/dsdb/tests/python/ldap.py @@ -918,16 +918,6 @@ class BasicTests(samba.tests.TestCase): (num, _) = e39.args self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX) - # Too long (max. 64) -# try: -# ldb.add({ -# "dn": "cn=ldaptestuser,cn=users," + self.base_dn, -# "objectClass": "person", -# "sn": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }) -# self.fail() -# except LdbError, (num, _): -# self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) - ldb.add({ "dn": "cn=ldaptestuser,cn=users," + self.base_dn, "objectClass": "person"}) @@ -939,19 +929,10 @@ class BasicTests(samba.tests.TestCase): try: ldb.modify(m) self.fail() - except LdbError as e40: - (num, _) = e40.args + except LdbError as e: + (num, _) = e.args self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX) - # Too long (max. 64) -# m = Message() -# m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn) -# m["sn"] = MessageElement("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", FLAG_MOD_REPLACE, "sn") -# try: -# ldb.modify(m) -# self.fail() -# except LdbError, (num, _): -# self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) m = Message() m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn) @@ -960,6 +941,36 @@ class BasicTests(samba.tests.TestCase): delete_force(self.ldb, "cn=ldaptestuser,cn=users," + self.base_dn) + def test_attribute_ranges_too_long(self): + """Test attribute ranges""" + # This is knownfail with the wrong error + # (INVALID_ATTRIBUTE_SYNTAX vs CONSTRAINT_VIOLATION per Windows) + + # Too long (max. 64) + try: + ldb.add({ + "dn": "cn=ldaptestuser,cn=users," + self.base_dn, + "objectClass": "person", + "sn": "x" * 65 }) + self.fail() + except LdbError as e: + (num, _) = e.args + self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) + + ldb.add({ + "dn": "cn=ldaptestuser,cn=users," + self.base_dn, + "objectClass": "person"}) + + # Too long (max. 64) + m = Message() + m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn) + m["sn"] = MessageElement("x" * 66, FLAG_MOD_REPLACE, "sn") + try: + ldb.modify(m) + self.fail() + except LdbError as e: + self.assertEquals(e.args[0], ERR_CONSTRAINT_VIOLATION) + def test_empty_messages(self): """Test empty messages""" m = Message()