From: Pieter Lexis Date: Thu, 22 Mar 2018 11:48:55 +0000 (+0100) Subject: Add tests for NSID and version.bind X-Git-Tag: dnsdist-1.3.1~50^2~13 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d2a5169a58741278c67d21e9e8e31664b4d4c5f;p=pdns Add tests for NSID and version.bind --- diff --git a/regression-tests.recursor-dnssec/test_ServerNames.py b/regression-tests.recursor-dnssec/test_ServerNames.py new file mode 100644 index 000000000..ab480e82f --- /dev/null +++ b/regression-tests.recursor-dnssec/test_ServerNames.py @@ -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)