From: Bob Halley Date: Mon, 29 Jun 2020 13:27:17 +0000 (-0700) Subject: add basic renderer testing X-Git-Tag: v2.0.0rc2~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b12752449004b3b198f0ecbef90a2a58fb19bc0;p=thirdparty%2Fdnspython.git add basic renderer testing --- diff --git a/tests/test_renderer.py b/tests/test_renderer.py new file mode 100644 index 00000000..345ef823 --- /dev/null +++ b/tests/test_renderer.py @@ -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)