summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2020-07-25 06:19:07 -0700
committerBob Halley <halley@dnspython.org>2020-07-25 06:19:07 -0700
commitb904694b12193a5782d5cee46dcc74d43483e1eb (patch)
treef22b181671177701c612e4a2f5c0a0f514ffc034
parentc4447c8cbd953ba67787c080ba10c9ba1827eab5 (diff)
downloaddnspython-b904694b12193a5782d5cee46dcc74d43483e1eb.tar.gz
more minor resolver coverage
-rw-r--r--tests/test_resolver.py51
1 files changed, 47 insertions, 4 deletions
diff --git a/tests/test_resolver.py b/tests/test_resolver.py
index ebb3825..6270fd3 100644
--- a/tests/test_resolver.py
+++ b/tests/test_resolver.py
@@ -28,6 +28,8 @@ import dns.name
import dns.rdataclass
import dns.rdatatype
import dns.resolver
+import dns.tsig
+import dns.tsigkeyring
# Some tests require the internet to be available to run, so let's
# skip those if it's not there.
@@ -547,6 +549,27 @@ class BaseResolverTests(unittest.TestCase):
r.use_edns(True)
self.assertEqual(r.edns, 0)
+ def testSetFlags(self):
+ flags = dns.flags.CD | dns.flags.RD
+ r = dns.resolver.Resolver(configure=False)
+ r.set_flags(flags)
+ self.assertEqual(r.flags, flags)
+
+ def testUseTSIG(self):
+ keyring = dns.tsigkeyring.from_text(
+ {
+ 'keyname.': 'NjHwPsMKjdN++dOfE5iAiQ=='
+ }
+ )
+ r = dns.resolver.Resolver(configure=False)
+ r.use_tsig(keyring)
+ self.assertEqual(r.keyring, keyring)
+ self.assertEqual(r.keyname, None)
+ self.assertEqual(r.keyalgorithm, dns.tsig.default_algorithm)
+
+keyname = dns.name.from_text('keyname')
+
+
@unittest.skipIf(not _network_available, "Internet not reachable")
class LiveResolverTests(unittest.TestCase):
@@ -864,7 +887,7 @@ class NanoTests(unittest.TestCase):
with NaptrNanoNameserver() as na:
res = dns.resolver.Resolver(configure=False)
res.port = na.udp_address[1]
- res.nameservers = [ na.udp_address[0] ]
+ res.nameservers = [na.udp_address[0]]
answer = dns.e164.query('1650551212', ['e164.arpa'], res)
self.assertEqual(answer[0].order, 0)
self.assertEqual(answer[0].preference, 0)
@@ -872,6 +895,26 @@ class NanoTests(unittest.TestCase):
self.assertEqual(answer[0].service, b'')
self.assertEqual(answer[0].regexp, b'')
self.assertEqual(answer[0].replacement, dns.name.root)
- def nxdomain():
- answer = dns.e164.query('0123456789', ['e164.arpa'], res)
- self.assertRaises(dns.resolver.NXDOMAIN, nxdomain)
+ with self.assertRaises(dns.resolver.NXDOMAIN):
+ dns.e164.query('0123456789', ['e164.arpa'], res)
+
+
+class AlwaysType3NXDOMAINNanoNameserver(Server):
+
+ def handle(self, request):
+ response = dns.message.make_response(request.message)
+ response.set_rcode(dns.rcode.NXDOMAIN)
+ response.flags |= dns.flags.RA
+ return response
+
+@unittest.skipIf(not (_network_available and _nanonameserver_available),
+ "Internet and NanoAuth required")
+class ZoneForNameNoParentTest(unittest.TestCase):
+
+ def testNoRootSOA(self):
+ with AlwaysType3NXDOMAINNanoNameserver() as na:
+ res = dns.resolver.Resolver(configure=False)
+ res.port = na.udp_address[1]
+ res.nameservers = [na.udp_address[0]]
+ with self.assertRaises(dns.resolver.NoRootSOA):
+ dns.resolver.zone_for_name('www.foo.bar.', resolver=res)