summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBrian Wellington <bwelling@xbill.org>2023-03-10 18:12:02 -0800
committerGitHub <noreply@github.com>2023-03-10 18:12:02 -0800
commit5ee0d6714a0bc0303491a253d86146b342c27918 (patch)
tree50316ee23c16735d23803892730443bc53609993 /tests
parent98b12e9e43847dac615bb690355d2fabaff969d2 (diff)
downloaddnspython-5ee0d6714a0bc0303491a253d86146b342c27918.tar.gz
Add dns.resolver.resolve_name(). (#903)
* Add dns.resolver.resolve_name(). * Add missing type annotations. * Add async resolve_name(). * Replace List[Answer] with HostAnswers. * Switch addresses_and_families() tuple order * Fix comment.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_async.py42
-rw-r--r--tests/test_resolver.py28
2 files changed, 70 insertions, 0 deletions
diff --git a/tests/test_async.py b/tests/test_async.py
index 65f1ed9..52ba2e2 100644
--- a/tests/test_async.py
+++ b/tests/test_async.py
@@ -187,6 +187,48 @@ class AsyncTests(unittest.TestCase):
dnsgoogle = dns.name.from_text("dns.google.")
self.assertEqual(answer[0].target, dnsgoogle)
+ def testResolveName(self):
+ async def run1():
+ return await dns.asyncresolver.resolve_name("dns.google.")
+
+ answers = self.async_run(run1)
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 4)
+ self.assertIn("8.8.8.8", seen)
+ self.assertIn("8.8.4.4", seen)
+ self.assertIn("2001:4860:4860::8844", seen)
+ self.assertIn("2001:4860:4860::8888", seen)
+
+ async def run2():
+ return await dns.asyncresolver.resolve_name("dns.google.", socket.AF_INET)
+
+ answers = self.async_run(run2)
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 2)
+ self.assertIn("8.8.8.8", seen)
+ self.assertIn("8.8.4.4", seen)
+
+ async def run3():
+ return await dns.asyncresolver.resolve_name("dns.google.", socket.AF_INET6)
+
+ answers = self.async_run(run3)
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 2)
+ self.assertIn("2001:4860:4860::8844", seen)
+ self.assertIn("2001:4860:4860::8888", seen)
+
+ async def run4():
+ await dns.asyncresolver.resolve_name("nxdomain.dnspython.org")
+
+ with self.assertRaises(dns.resolver.NXDOMAIN):
+ self.async_run(run4)
+
+ async def run5():
+ await dns.asyncresolver.resolve_name(dns.reversename.from_address("8.8.8.8"))
+
+ with self.assertRaises(dns.resolver.NoAnswer):
+ self.async_run(run5)
+
def testCanonicalNameNoCNAME(self):
cname = dns.name.from_text("www.google.com")
diff --git a/tests/test_resolver.py b/tests/test_resolver.py
index c1a97bf..c73451e 100644
--- a/tests/test_resolver.py
+++ b/tests/test_resolver.py
@@ -31,6 +31,7 @@ import dns.quic
import dns.rdataclass
import dns.rdatatype
import dns.resolver
+import dns.reversename
import dns.tsig
import dns.tsigkeyring
import tests.util
@@ -665,6 +666,33 @@ class LiveResolverTests(unittest.TestCase):
dnsgoogle = dns.name.from_text("dns.google.")
self.assertEqual(answer[0].target, dnsgoogle)
+ def testResolveName(self):
+ answers = dns.resolver.resolve_name("dns.google.")
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 4)
+ self.assertIn("8.8.8.8", seen)
+ self.assertIn("8.8.4.4", seen)
+ self.assertIn("2001:4860:4860::8844", seen)
+ self.assertIn("2001:4860:4860::8888", seen)
+
+ answers = dns.resolver.resolve_name("dns.google.", socket.AF_INET)
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 2)
+ self.assertIn("8.8.8.8", seen)
+ self.assertIn("8.8.4.4", seen)
+
+ answers = dns.resolver.resolve_name("dns.google.", socket.AF_INET6)
+ seen = set(answers.addresses())
+ self.assertEqual(len(seen), 2)
+ self.assertIn("2001:4860:4860::8844", seen)
+ self.assertIn("2001:4860:4860::8888", seen)
+
+ with self.assertRaises(dns.resolver.NXDOMAIN):
+ dns.resolver.resolve_name("nxdomain.dnspython.org")
+
+ with self.assertRaises(dns.resolver.NoAnswer):
+ dns.resolver.resolve_name(dns.reversename.from_address("8.8.8.8"))
+
@patch.object(dns.message.Message, "use_edns")
def testResolveEdnsOptions(self, message_use_edns_mock):
resolver = dns.resolver.Resolver()