]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
test padding in DoT
authorBob Halley <halley@dnspython.org>
Wed, 23 Mar 2022 13:10:35 +0000 (06:10 -0700)
committerBob Halley <halley@dnspython.org>
Wed, 23 Mar 2022 13:10:35 +0000 (06:10 -0700)
tests/test_query.py

index e8a5390267b139e27a4d10394da03c423a2ab905..88d6375345e1ba88685af8bbfc405a9b836b9d95 100644 (file)
@@ -142,6 +142,7 @@ class QueryTests(unittest.TestCase):
                 self.assertTrue("8.8.8.8" in seen)
                 self.assertTrue("8.8.4.4" in seen)
 
+    @unittest.skipUnless(have_ssl, "No SSL support")
     def testQueryTLS(self):
         for address in query_addresses:
             qname = dns.name.from_text("dns.google.")
@@ -184,6 +185,27 @@ class QueryTests(unittest.TestCase):
                     self.assertTrue("8.8.8.8" in seen)
                     self.assertTrue("8.8.4.4" in seen)
 
+    @unittest.skipUnless(have_ssl, "No SSL support")
+    def testQueryTLSwithPadding(self):
+        for address in query_addresses:
+            qname = dns.name.from_text("dns.google.")
+            q = dns.message.make_query(qname, dns.rdatatype.A, use_edns=0, pad=128)
+            response = dns.query.tls(q, address, timeout=2)
+            rrs = response.get_rrset(
+                response.answer, qname, dns.rdataclass.IN, dns.rdatatype.A
+            )
+            self.assertTrue(rrs is not None)
+            seen = set([rdata.address for rdata in rrs])
+            self.assertTrue("8.8.8.8" in seen)
+            self.assertTrue("8.8.4.4" in seen)
+            # the response should have a padding option
+            self.assertIsNotNone(response.opt)
+            has_pad = False
+            for o in response.opt[0].options:
+                if o.otype == dns.edns.OptionType.PADDING:
+                    has_pad = True
+            self.assertTrue(has_pad)
+
     def testQueryUDPFallback(self):
         for address in query_addresses:
             qname = dns.name.from_text(".")