ldb: extend API tests
authorAndrew Bartlett <abartlet@samba.org>
Wed, 4 Jul 2018 01:26:16 +0000 (13:26 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 15 Aug 2018 05:08:24 +0000 (07:08 +0200)
These additional API tests just check that an invalid base DN
is never accepted.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
lib/ldb/tests/python/api.py

index e40109606975804d2ab31dcb0444489b03ca64a5..471d70fc5218c126fff6c29d8859dfe7cbf18dca 100755 (executable)
@@ -1309,6 +1309,41 @@ class SearchTests(LdbBaseTest):
                               expression="(distinguishedName=OU=OU1,DC=SAMBA,DCXXXX)")
         self.assertEqual(len(res11), 0)
 
+    def test_bad_dn_search_base(self):
+        """Testing with a bad base DN (SCOPE_BASE)"""
+
+        try:
+            res11 = self.l.search(base="OU=OU1,DC=SAMBA,DCXXX",
+                                  scope=ldb.SCOPE_BASE)
+            self.fail("Should have failed with ERR_INVALID_DN_SYNTAX")
+        except ldb.LdbError as err:
+            enum = err.args[0]
+            self.assertEqual(enum, ldb.ERR_INVALID_DN_SYNTAX)
+
+
+    def test_bad_dn_search_one(self):
+        """Testing with a bad base DN (SCOPE_ONELEVEL)"""
+
+        try:
+            res11 = self.l.search(base="DC=SAMBA,DCXXXX",
+                              scope=ldb.SCOPE_ONELEVEL)
+            self.fail("Should have failed with ERR_INVALID_DN_SYNTAX")
+        except ldb.LdbError as err:
+            enum = err.args[0]
+            self.assertEqual(enum, ldb.ERR_INVALID_DN_SYNTAX)
+
+    def test_bad_dn_search_subtree(self):
+        """Testing with a bad base DN (SCOPE_SUBTREE)"""
+
+        try:
+            res11 = self.l.search(base="DC=SAMBA,DCXXXX",
+                                  scope=ldb.SCOPE_SUBTREE)
+            self.fail("Should have failed with ERR_INVALID_DN_SYNTAX")
+        except ldb.LdbError as err:
+            enum = err.args[0]
+            self.assertEqual(enum, ldb.ERR_INVALID_DN_SYNTAX)
+
+
 
 # Run the search tests against an lmdb backend
 class SearchTestsLmdb(SearchTests):
@@ -1375,8 +1410,10 @@ class IndexedAndOneLevelDNFilterSearchTests(SearchTests):
     def setUp(self):
         super(IndexedAndOneLevelDNFilterSearchTests, self).setUp()
         self.l.add({"dn": "@OPTIONS",
-                    "disallowDNFilter": "TRUE"})
+                    "disallowDNFilter": "TRUE",
+                    "checkBaseOnSearch": "TRUE"})
         self.disallowDNFilter = True
+        self.checkBaseOnSearch = True
 
         self.l.add({"dn": "@INDEXLIST",
                     "@IDXATTR": [b"x", b"y", b"ou"],
@@ -1408,8 +1445,10 @@ class GUIDIndexedDNFilterSearchTests(SearchTests):
                       "@IDX_DN_GUID": [b"GUID"]}
         super(GUIDIndexedDNFilterSearchTests, self).setUp()
         self.l.add({"dn": "@OPTIONS",
-                    "disallowDNFilter": "TRUE"})
+                    "disallowDNFilter": "TRUE",
+                    "checkBaseOnSearch": "TRUE"})
         self.disallowDNFilter = True
+        self.checkBaseOnSearch = True
         self.IDX = True
         self.IDXGUID = True
 
@@ -1423,8 +1462,10 @@ class GUIDAndOneLevelIndexedSearchTests(SearchTests):
                       "@IDX_DN_GUID": [b"GUID"]}
         super(GUIDAndOneLevelIndexedSearchTests, self).setUp()
         self.l.add({"dn": "@OPTIONS",
-                    "disallowDNFilter": "TRUE"})
+                    "disallowDNFilter": "TRUE",
+                    "checkBaseOnSearch": "TRUE"})
         self.disallowDNFilter = True
+        self.checkBaseOnSearch = True
         self.IDX = True
         self.IDXGUID = True
         self.IDXONE = True