X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=blobdiff_plain;f=source4%2Flib%2Fldb%2Ftests%2Fpython%2Fldap.py;fp=source4%2Flib%2Fldb%2Ftests%2Fpython%2Fldap.py;h=86980c96f145b032a8fc2a6544746fac96958fb2;hp=64889f1e325e3b677505f7cde5d98215c68d01dc;hb=17f465a4ac5562bec1b40dc97ac414fb3920175b;hpb=ee278bf0c48dbc8b7afc37762ad4f305014a2e2c diff --git a/source4/lib/ldb/tests/python/ldap.py b/source4/lib/ldb/tests/python/ldap.py index 64889f1e325..86980c96f14 100755 --- a/source4/lib/ldb/tests/python/ldap.py +++ b/source4/lib/ldb/tests/python/ldap.py @@ -154,8 +154,12 @@ class BasicTests(unittest.TestCase): self.delete_force(self.ldb, "ou=testou,cn=users," + self.base_dn) def test_invalid_attribute(self): - """Test adding invalid attributes (not in schema)""" - print "Test adding invalid attributes (not in schema)""" + """Test invalid attributes on schema/objectclasses""" + print "Test invalid attributes on schema/objectclasses""" + + # attributes not in schema test + + # add operation try: self.ldb.add({ @@ -170,6 +174,8 @@ class BasicTests(unittest.TestCase): "dn": "cn=ldaptestgroup,cn=users," + self.base_dn, "objectclass": "group"}) + # modify operation + m = Message() m.dn = Dn(ldb, "cn=ldaptestgroup,cn=users," + self.base_dn) m["thisdoesnotexist"] = MessageElement("x", FLAG_MOD_REPLACE, @@ -182,6 +188,73 @@ class BasicTests(unittest.TestCase): self.delete_force(self.ldb, "cn=ldaptestgroup,cn=users," + self.base_dn) + # attributes not in objectclasses and mandatory attributes missing test + # Use here a non-SAM entry since it doesn't have special triggers + # associated which have an impact on the error results. + + # add operations + + # mandatory attribute missing + try: + self.ldb.add({ + "dn": "cn=ldaptestobject," + self.base_dn, + "objectclass": "ipProtocol"}) + self.fail() + except LdbError, (num, _): + self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION) + + # inadequate but schema-valid attribute specified + try: + self.ldb.add({ + "dn": "cn=ldaptestobject," + self.base_dn, + "objectclass": "ipProtocol", + "ipProtocolNumber": "1", + "uid" : "0"}) + self.fail() + except LdbError, (num, _): + self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION) + + self.ldb.add({ + "dn": "cn=ldaptestobject," + self.base_dn, + "objectclass": "ipProtocol", + "ipProtocolNumber": "1"}) + + # modify operations + + # inadequate but schema-valid attribute add trial + m = Message() + m.dn = Dn(ldb, "cn=ldaptestobject," + self.base_dn) + m["uid"] = MessageElement("0", FLAG_MOD_ADD, "uid") + try: + ldb.modify(m) + self.fail() + except LdbError, (num, _): + self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION) + + # mandatory attribute delete trial + m = Message() + m.dn = Dn(ldb, "cn=ldaptestobject," + self.base_dn) + m["ipProtocolNumber"] = MessageElement([], FLAG_MOD_DELETE, + "ipProtocolNumber") + try: + ldb.modify(m) + self.fail() + except LdbError, (num, _): + self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION) + + # mandatory attribute delete trial + m = Message() + m.dn = Dn(ldb, "cn=ldaptestobject," + self.base_dn) + m["ipProtocolNumber"] = MessageElement([], FLAG_MOD_REPLACE, + "ipProtocolNumber") + try: + ldb.modify(m) + self.fail() + except LdbError, (num, _): + self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION) + + self.delete_force(self.ldb, "cn=ldaptestobject," + self.base_dn) + def test_single_valued_attributes(self): """Test single-valued attributes""" print "Test single-valued attributes"""