]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
make `name in zone` consistent with `zone[name]` 636/head
authorkimbo <kimballleavitt@gmail.com>
Tue, 16 Feb 2021 22:21:13 +0000 (15:21 -0700)
committerkimbo <kimballleavitt@gmail.com>
Tue, 16 Feb 2021 22:21:13 +0000 (15:21 -0700)
specifically, allow name to be a str, and raise a KeyError if name
cannot be converted into a dns.name.Name

dns/zone.py
tests/test_zone.py

index c9c1c20193fca28a1804ddbd5ae4fbec832939bb..ac9576386938854b01e407122e5db057c8e30e4d 100644 (file)
@@ -162,8 +162,9 @@ class Zone(dns.transaction.TransactionManager):
         key = self._validate_name(key)
         return self.nodes.get(key)
 
-    def __contains__(self, other):
-        return other in self.nodes
+    def __contains__(self, key):
+        key = self._validate_name(key)
+        return key in self.nodes
 
     def find_node(self, name, create=False):
         """Find a node in the zone, possibly creating it.
index 66f3ad5a49fda9afebf52fdf59769975878bac8d..26adc878173681e30b9f1cb9533d0b8a51922c9e 100644 (file)
@@ -872,5 +872,15 @@ class VersionedZoneTestCase(unittest.TestCase):
             rds = txn.get('example.', 'soa')
             self.assertEqual(rds[0].serial, 1)
 
+    def testNameInZoneWithStr(self):
+        z = dns.zone.from_text(example_text, 'example.', relativize=False)
+        self.assertTrue('ns1.example.' in z)
+        self.assertTrue('bar.foo.example.' in z)
+
+    def testNameInZoneWhereNameIsNotValid(self):
+        z = dns.zone.from_text(example_text, 'example.', relativize=False)
+        with self.assertRaises(KeyError):
+            self.assertTrue(1 in z)
+
 if __name__ == '__main__':
     unittest.main()