Extend ldb_dn_compare tests to target new changes on the to store ldb objects
authorMatthieu Patou <mat@matws.net>
Fri, 22 May 2015 12:57:42 +0000 (05:57 -0700)
committerMatthieu Patou <mat@matws.net>
Wed, 27 May 2015 05:01:37 +0000 (22:01 -0700)
That is to say we want to insure that spacing has no impact on the
hability to find objects.

Change-Id: I67fe0b868d9d8571be1f1478da83c7b7100fec01
Signed-off-by: Matthieu Patou <mat@matws.net>
lib/ldb/tests/python/api.py

index d101de864f8d345b92bf441c514513b9c5d04659..da10b0a78e4ff3cb94fe5c3ace128076b46f10bf 100755 (executable)
@@ -450,12 +450,17 @@ class DnTests(TestCase):
         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):
 
@@ -775,6 +780,44 @@ class LdbResultTests(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):