]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
basic testing of entropy and resolver override
authorBob Halley <halley@dnspython.org>
Sat, 23 May 2020 17:33:25 +0000 (10:33 -0700)
committerBob Halley <halley@dnspython.org>
Sat, 23 May 2020 17:33:25 +0000 (10:33 -0700)
tests/test_entropy.py [new file with mode: 0644]
tests/test_resolver_override.py [new file with mode: 0644]

diff --git a/tests/test_entropy.py b/tests/test_entropy.py
new file mode 100644 (file)
index 0000000..491303f
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
+
+import unittest
+
+import dns.entropy
+
+# these tests are mostly for minimal coverage testing
+
+class EntropyTestCase(unittest.TestCase):
+    def test_pool(self):
+        pool = dns.entropy.EntropyPool(b'seed-value')
+        self.assertEqual(pool.random_8(), 94)
+        self.assertEqual(pool.random_16(), 61532)
+        self.assertEqual(pool.random_32(), 4226376065)
+        self.assertEqual(pool.random_between(10, 50), 29)
+
+    def test_functions(self):
+        v = dns.entropy.random_16()
+        self.assertTrue(0 <= v <= 65535)
+        v = dns.entropy.between(10, 50)
+        self.assertTrue(10 <= v <= 50)
diff --git a/tests/test_resolver_override.py b/tests/test_resolver_override.py
new file mode 100644 (file)
index 0000000..06f1ac1
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
+
+import socket
+import unittest
+
+import dns.name
+import dns.rdataclass
+import dns.rdatatype
+import dns.resolver
+
+# Some tests require the internet to be available to run, so let's
+# skip those if it's not there.
+_network_available = True
+try:
+    socket.gethostbyname('dnspython.org')
+except socket.gaierror:
+    _network_available = False
+
+@unittest.skipIf(not _network_available, "Internet not reachable")
+class OverrideSystemResolverTestCase(unittest.TestCase):
+    def test_override(self):
+        res = dns.resolver.Resolver()
+        res.nameservers = ['8.8.8.8']
+        res.cache = dns.resolver.LRUCache()
+        dns.resolver.override_system_resolver(res)
+        self.assertTrue(socket.getaddrinfo is
+                        dns.resolver._getaddrinfo)
+        socket.gethostbyname('www.dnspython.org')
+        answer = res.cache.get((dns.name.from_text('www.dnspython.org.'),
+                                dns.rdatatype.A, dns.rdataclass.IN))
+        self.assertTrue(answer is not None)
+        res.cache.flush()
+        socket.gethostbyname_ex('www.dnspython.org')
+        answer = res.cache.get((dns.name.from_text('www.dnspython.org.'),
+                                dns.rdatatype.A, dns.rdataclass.IN))
+        self.assertTrue(answer is not None)
+        res.cache.flush()
+        socket.getfqdn('8.8.8.8')
+        answer = res.cache.get((dns.name.from_text('8.8.8.8.in-addr.arpa.'),
+                                dns.rdatatype.PTR, dns.rdataclass.IN))
+        self.assertTrue(answer is not None)
+        res.cache.flush()
+        socket.gethostbyaddr('8.8.8.8')
+        answer = res.cache.get((dns.name.from_text('8.8.8.8.in-addr.arpa.'),
+                                dns.rdatatype.PTR, dns.rdataclass.IN))
+        self.assertTrue(answer is not None)
+        dns.resolver.restore_system_resolver()
+        self.assertTrue(socket.getaddrinfo is
+                        dns.resolver._original_getaddrinfo)