From: Bob Halley Date: Sat, 23 May 2020 17:33:25 +0000 (-0700) Subject: basic testing of entropy and resolver override X-Git-Tag: v2.0.0rc1~160 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ca671bb589cc0864eeb965299929b97ee5ec29d;p=thirdparty%2Fdnspython.git basic testing of entropy and resolver override --- diff --git a/tests/test_entropy.py b/tests/test_entropy.py new file mode 100644 index 00000000..491303f8 --- /dev/null +++ b/tests/test_entropy.py @@ -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 index 00000000..06f1ac1c --- /dev/null +++ b/tests/test_resolver_override.py @@ -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)