]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
add basic renderer testing
authorBob Halley <halley@play-bow.org>
Mon, 29 Jun 2020 13:27:17 +0000 (06:27 -0700)
committerBob Halley <halley@play-bow.org>
Mon, 29 Jun 2020 13:27:17 +0000 (06:27 -0700)
tests/test_renderer.py [new file with mode: 0644]

diff --git a/tests/test_renderer.py b/tests/test_renderer.py
new file mode 100644 (file)
index 0000000..345ef82
--- /dev/null
@@ -0,0 +1,46 @@
+# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
+
+import unittest
+
+import dns.exception
+import dns.message
+import dns.renderer
+import dns.flags
+
+basic_answer = \
+    """flags QR
+edns 0
+payload 4096
+;QUESTION
+foo.example. IN A
+;ANSWER
+foo.example. 30 IN A 10.0.0.1
+foo.example. 30 IN A 10.0.0.2
+"""
+
+class RendererTestCase(unittest.TestCase):
+    def test_basic(self):
+        r = dns.renderer.Renderer(flags=dns.flags.QR, max_size=512)
+        qname = dns.name.from_text('foo.example')
+        r.add_question(qname, dns.rdatatype.A)
+        rds = dns.rdataset.from_text('in', 'a', 30, '10.0.0.1', '10.0.0.2')
+        r.add_rdataset(dns.renderer.ANSWER, qname, rds)
+        r.add_edns(0, 0, 4096)
+        r.write_header()
+        wire = r.get_wire()
+        message = dns.message.from_wire(wire)
+        expected = dns.message.from_text(basic_answer)
+        # Our rendered message purposely has a random query id so we
+        # exercise that code, so copy it into the expected message.
+        expected.id = message.id
+        self.assertEqual(message, expected)
+
+    def test_going_backwards_fails(self):
+        r = dns.renderer.Renderer(flags=dns.flags.QR, max_size=512)
+        qname = dns.name.from_text('foo.example')
+        r.add_question(qname, dns.rdatatype.A)
+        r.add_edns(0, 0, 4096)
+        rds = dns.rdataset.from_text('in', 'a', 30, '10.0.0.1', '10.0.0.2')
+        def bad():
+            r.add_rdataset(dns.renderer.ANSWER, qname, rds)
+        self.assertRaises(dns.exception.FormError, bad)