dn2 = ldb.Dn(self.ldb, "cn=foo,dc=base")
dn3 = ldb.Dn(self.ldb, "cn=bar,dc=base")
dn4 = ldb.Dn(self.ldb, "cn=baz,cn=bar,dc=base")
+ dn5 = ldb.Dn(self.ldb, "acn=baz,cn=bar,dc=base")
+ # The space is on purpose
+ dn6 = ldb.Dn(self.ldb, "cn=test, dc=base")
self.assertTrue(dn2.is_child_of(dn1))
self.assertTrue(dn4.is_child_of(dn1))
self.assertTrue(dn4.is_child_of(dn3))
+ self.assertTrue(dn6.is_child_of(dn1))
self.assertFalse(dn3.is_child_of(dn2))
self.assertFalse(dn1.is_child_of(dn4))
+ self.assertFalse(dn5.is_child_of(dn4))
class LdbMsgTests(TestCase):
found = True
self.assertTrue(found)
+ def test_entry_withwithoutattr(self):
+ l = ldb.Ldb(filename())
+ m = ldb.Message()
+ m.dn = ldb.Dn(l, "dc=test_entry")
+ l.add(m)
+ try:
+ m = ldb.Message()
+ m.dn = ldb.Dn(l, "dc=test_entry")
+ # An empty object allways returns dn when no attribute are specified
+ r = l.search(m.dn)
+ self.assertEquals(1, len(r))
+ rm = r[0]
+ self.assertEquals(1, len(rm))
+
+ # An empty object allways returns nothing when an attribute is specified
+ m = ldb.Message()
+ m.dn = ldb.Dn(l, "dc=test_entry")
+ r = l.search(m.dn, attrs=["bla"])
+ self.assertEquals(0, len(r))
+
+ # A non empty object returns an object when asked for a non existing attribute
+ m["bla"] = ldb.MessageElement(["456"], ldb.FLAG_MOD_ADD, "bla")
+ l.modify(m)
+ r = l.search(m.dn)
+ self.assertEquals(1, len(r))
+ rm = r[0]
+ self.assertEquals(2, len(rm))
+ self.assertTrue(rm["distinguishedName"] != None)
+ print rm
+ self.assertEquals(["456"], list(rm["bla"]))
+
+ r = l.search(m.dn, attrs=["blo"])
+ self.assertEquals(1, len(r))
+ rm = r[0]
+ self.assertEquals(0, len(rm))
+ finally:
+ l.delete(ldb.Dn(l, "dc=test_entry"))
+
class BadTypeTests(TestCase):
def test_control(self):