]> granicus.if.org Git - pdns/commitdiff
Add tests for NSID and version.bind
authorPieter Lexis <pieter.lexis@powerdns.com>
Thu, 22 Mar 2018 11:48:55 +0000 (12:48 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 30 May 2018 08:00:51 +0000 (10:00 +0200)
regression-tests.recursor-dnssec/test_ServerNames.py [new file with mode: 0644]

diff --git a/regression-tests.recursor-dnssec/test_ServerNames.py b/regression-tests.recursor-dnssec/test_ServerNames.py
new file mode 100644 (file)
index 0000000..ab480e8
--- /dev/null
@@ -0,0 +1,122 @@
+import dns
+import os
+from recursortests import RecursorTest
+
+class testServerNames(RecursorTest):
+    """
+    This tests all kinds naming things
+    """
+
+    _confdir = 'ServerNames'
+    _servername = 'awesome-pdns1.example.com'
+    _versionbind = 'Awesome!'
+    _versionbind_expected = dns.rrset.from_text('version.bind.', 86400, 'CH', 'TXT', _versionbind)
+    _idserver_expected = dns.rrset.from_text('id.server.', 86400, 'CH', 'TXT', _servername)
+
+    _config_template = """
+server-id=%s
+version-string=%s
+    """ % (_servername, _versionbind)
+
+
+    def testVersionBindUDP(self):
+        """
+        Send a version.bind CH TXT query over UDP and look for the version string
+        """
+        query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=False)
+        response = self.sendUDPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._versionbind_expected)
+
+    def testVersionBindTCP(self):
+        """
+        Send a version.bind CH TXT query over TCP and look for the version string
+        """
+        query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=False)
+        response = self.sendTCPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._versionbind_expected)
+
+    def testVersionBindUDPEDNS(self):
+        """
+        Send a version.bind CH TXT query over UDP (with EDNS) and look for the version string
+        """
+        query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=True)
+        response = self.sendUDPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._versionbind_expected)
+
+    def testVersionBindTCPEDNS(self):
+        """
+        Send a version.bind CH TXT query over TCP (with EDNS) and look for the version string
+        """
+        query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=True)
+        response = self.sendTCPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._versionbind_expected)
+
+    def testIdServerUDP(self):
+        """
+        Send a id.server CH TXT query over UDP and look for the server id
+        """
+        query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=False)
+        response = self.sendUDPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._idserver_expected)
+
+    def testIdServerTCP(self):
+        """
+        Send a id.server CH TXT query over TCP and look for the server id
+        """
+        query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=False)
+        response = self.sendTCPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._idserver_expected)
+
+    def testIdServerUDPEDNS(self):
+        """
+        Send a id.server CH TXT query over UDP (with EDNS) and look for the server id
+        """
+        query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=True)
+        response = self.sendUDPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._idserver_expected)
+
+    def testIdServerTCPEDNS(self):
+        """
+        Send a id.server CH TXT query over TCP (with EDNS) and look for the server id
+        """
+        query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=True)
+        response = self.sendTCPQuery(query)
+
+        self.assertEqual(len(response.answer), 1)
+        self.assertRRsetInAnswer(response, self._idserver_expected)
+
+    def testNSIDUDP(self):
+        """
+        Send a .|NS query with NSID option
+        """
+        opts = [dns.edns.GenericOption(dns.edns.NSID, b'')]
+        query = dns.message.make_query('.', 'NS', 'IN', use_edns=True, options=opts)
+        response = self.sendUDPQuery(query)
+
+        self.assertEqual(len(response.options), 1)
+        self.assertEqual(response.options[0].data, self._servername)
+
+    def testNSIDTCP(self):
+        """
+        Send a .|NS query with NSID option
+        """
+        opts = [dns.edns.GenericOption(dns.edns.NSID, b'')]
+        query = dns.message.make_query('.', 'NS', 'IN', use_edns=True, options=opts)
+        response = self.sendTCPQuery(query)
+
+        self.assertEqual(len(response.options), 1)
+        self.assertEqual(response.options[0].data, self._servername)