]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
increase coverage
authorBob Halley <halley@play-bow.org>
Mon, 29 Jun 2020 02:05:28 +0000 (19:05 -0700)
committerBob Halley <halley@play-bow.org>
Mon, 29 Jun 2020 02:05:28 +0000 (19:05 -0700)
MANIFEST.in
tests/query [new file with mode: 0644]
tests/test_message.py
tests/test_rrset.py

index 2f3b4d416b03a5c6589506e578fa0b885c887f28..8fdc68c53d741f1da1ef880792fad4f6bb603105 100644 (file)
@@ -1,3 +1,3 @@
 include LICENSE ChangeLog README.md
 recursive-include examples *.txt *.py
-recursive-include tests *.txt *.py Makefile *.good example
+recursive-include tests *.txt *.py Makefile *.good example query
diff --git a/tests/query b/tests/query
new file mode 100644 (file)
index 0000000..06edbb7
--- /dev/null
@@ -0,0 +1,12 @@
+id 1234
+opcode QUERY
+rcode NOERROR
+flags RD
+edns 0
+eflags DO
+payload 4096
+;QUESTION
+wwww.dnspython.org. IN A
+;ANSWER
+;AUTHORITY
+;ADDITIONAL
index a123409512a378b0a75025a94d86a667133d2c74..ca1fc8699248f4f473eb6341470d7b691eaef3a3 100644 (file)
@@ -16,6 +16,7 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
+import os
 import unittest
 import binascii
 
@@ -27,6 +28,9 @@ import dns.rdataclass
 import dns.rdatatype
 import dns.rrset
 
+def here(filename):
+    return os.path.join(os.path.dirname(__file__), filename)
+
 query_text = """id 1234
 opcode QUERY
 rcode NOERROR
@@ -203,6 +207,7 @@ class MessageTestCase(unittest.TestCase):
         m = dns.message.make_query('foo', 'A')
         m.set_rcode(4095)
         self.assertEqual(m.rcode(), 4095)
+        self.assertEqual(m.edns, 0)
         m.set_rcode(2)
         self.assertEqual(m.rcode(), 2)
 
@@ -239,6 +244,34 @@ class MessageTestCase(unittest.TestCase):
                             dns.rdatatype.SOA)
         self.assertEqual(rrs1, rrs2)
 
+    def test_FindRRsetUnindexed(self):
+        a = dns.message.from_text(answer_text)
+        a.index = None
+        n = dns.name.from_text('dnspython.org.')
+        rrs1 = a.find_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.SOA)
+        rrs2 = a.find_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+                            dns.rdatatype.SOA)
+        self.assertEqual(rrs1, rrs2)
+
+    def test_GetRRset(self):
+        a = dns.message.from_text(answer_text)
+        a.index = None
+        n = dns.name.from_text('dnspython.org.')
+        rrs1 = a.get_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.SOA)
+        rrs2 = a.get_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+                           dns.rdatatype.SOA)
+        self.assertEqual(rrs1, rrs2)
+
+    def test_GetNonexistentRRset(self):
+        a = dns.message.from_text(answer_text)
+        a.index = None
+        n = dns.name.from_text('dnspython.org.')
+        rrs1 = a.get_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.TXT)
+        rrs2 = a.get_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+                           dns.rdatatype.TXT)
+        self.assertTrue(rrs1 is None)
+        self.assertEqual(rrs1, rrs2)
+
     def test_CleanTruncated(self):
         def bad():
             a = dns.message.from_text(answer_text)
@@ -303,5 +336,15 @@ class MessageTestCase(unittest.TestCase):
         m.want_dnssec()
         self.assertEqual(m.edns, 0)
 
+    def test_from_file(self):
+        m = dns.message.from_file(here('query'))
+        expected = dns.message.from_text(query_text)
+        self.assertEqual(m, expected)
+
+    def test_explicit_header_comment(self):
+        m = dns.message.from_text(';HEADER\n' + query_text)
+        expected = dns.message.from_text(query_text)
+        self.assertEqual(m, expected)
+
 if __name__ == '__main__':
     unittest.main()
index 9540e3c4d6ad9beced078cd216777cc60eec3a8a..7835ba1df8fc508c7037c38314bf7955afc0a5ae 100644 (file)
@@ -158,5 +158,22 @@ class RRsetTestCase(unittest.TestCase):
                               dns.rdataclass.IN, dns.rdatatype.A)
         self.assertFalse(rrs == 123)
 
+    def testRepr(self):
+        rrset = dns.rrset.from_text('foo', 30, 'in', 'a', '10.0.0.1',
+                                    '10.0.0.2')
+        self.assertEqual(repr(rrset),
+                         '<DNS foo IN A RRset: [<10.0.0.1>, <10.0.0.2>]>')
+        rrset.deleting = dns.rdataclass.NONE
+        self.assertEqual(repr(rrset),
+                         '<DNS foo IN A delete=NONE RRset: ' +
+                         '[<10.0.0.1>, <10.0.0.2>]>')
+        rrset = dns.rrset.from_text(
+            'foo', 30, 'in', 'rrsig',
+            'A 1 3 3600 20200701000000 20200601000000 1 NAME Ym9ndXM=')
+        self.assertEqual(repr(rrset),
+                         '<DNS foo IN RRSIG(A) RRset: ' +
+                         '[<A 1 3 3600 20200701000000 20200601000000 ' +
+                         '1 NAME Ym9ndXM=>]>')
+
 if __name__ == '__main__':
     unittest.main()