]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.recursor-dnssec/test_ServerNames.py
Merge pull request #13509 from rgacogne/ddist-teeaction-proxyprotocol
[thirdparty/pdns.git] / regression-tests.recursor-dnssec / test_ServerNames.py
1 import dns
2 import os
3 from recursortests import RecursorTest
4
5 class testServerNames(RecursorTest):
6 """
7 This tests all kinds naming things
8 """
9
10 _confdir = 'ServerNames'
11 _servername = 'awesome-pdns1.example.com'
12 _versionbind = 'Awesome!'
13 _versionbind_expected = dns.rrset.from_text('version.bind.', 86400, 'CH', 'TXT', _versionbind)
14 _idserver_expected = dns.rrset.from_text('id.server.', 86400, 'CH', 'TXT', _servername)
15
16 _config_template = """
17 server-id=%s
18 version-string=%s
19 """ % (_servername, _versionbind)
20
21
22 def testVersionBindUDP(self):
23 """
24 Send a version.bind CH TXT query over UDP and look for the version string
25 """
26 query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=False)
27 response = self.sendUDPQuery(query)
28
29 self.assertEqual(len(response.answer), 1)
30 self.assertRRsetInAnswer(response, self._versionbind_expected)
31
32 def testVersionBindTCP(self):
33 """
34 Send a version.bind CH TXT query over TCP and look for the version string
35 """
36 query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=False)
37 response = self.sendTCPQuery(query)
38
39 self.assertEqual(len(response.answer), 1)
40 self.assertRRsetInAnswer(response, self._versionbind_expected)
41
42 def testVersionBindUDPEDNS(self):
43 """
44 Send a version.bind CH TXT query over UDP (with EDNS) and look for the version string
45 """
46 query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=True)
47 response = self.sendUDPQuery(query)
48
49 self.assertEqual(len(response.answer), 1)
50 self.assertRRsetInAnswer(response, self._versionbind_expected)
51
52 def testVersionBindTCPEDNS(self):
53 """
54 Send a version.bind CH TXT query over TCP (with EDNS) and look for the version string
55 """
56 query = dns.message.make_query('version.bind', 'TXT', 'CH', use_edns=True)
57 response = self.sendTCPQuery(query)
58
59 self.assertEqual(len(response.answer), 1)
60 self.assertRRsetInAnswer(response, self._versionbind_expected)
61
62 def testIdServerUDP(self):
63 """
64 Send a id.server CH TXT query over UDP and look for the server id
65 """
66 query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=False)
67 response = self.sendUDPQuery(query)
68
69 self.assertEqual(len(response.answer), 1)
70 self.assertRRsetInAnswer(response, self._idserver_expected)
71
72 def testIdServerTCP(self):
73 """
74 Send a id.server CH TXT query over TCP and look for the server id
75 """
76 query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=False)
77 response = self.sendTCPQuery(query)
78
79 self.assertEqual(len(response.answer), 1)
80 self.assertRRsetInAnswer(response, self._idserver_expected)
81
82 def testIdServerUDPEDNS(self):
83 """
84 Send a id.server CH TXT query over UDP (with EDNS) and look for the server id
85 """
86 query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=True)
87 response = self.sendUDPQuery(query)
88
89 self.assertEqual(len(response.answer), 1)
90 self.assertRRsetInAnswer(response, self._idserver_expected)
91
92 def testIdServerTCPEDNS(self):
93 """
94 Send a id.server CH TXT query over TCP (with EDNS) and look for the server id
95 """
96 query = dns.message.make_query('id.server', 'TXT', 'CH', use_edns=True)
97 response = self.sendTCPQuery(query)
98
99 self.assertEqual(len(response.answer), 1)
100 self.assertRRsetInAnswer(response, self._idserver_expected)
101
102 def testNSIDUDP(self):
103 """
104 Send a .|NS query with NSID option
105 """
106 opts = [dns.edns.GenericOption(dns.edns.NSID, b'')]
107 query = dns.message.make_query('.', 'NS', 'IN', use_edns=True, options=opts)
108 response = self.sendUDPQuery(query)
109
110 self.assertEqual(len(response.options), 1)
111 self.assertEqual(response.options[0].data, self._servername.encode('ascii'))
112
113 def testNSIDTCP(self):
114 """
115 Send a .|NS query with NSID option
116 """
117 opts = [dns.edns.GenericOption(dns.edns.NSID, b'')]
118 query = dns.message.make_query('.', 'NS', 'IN', use_edns=True, options=opts)
119 response = self.sendTCPQuery(query)
120
121 self.assertEqual(len(response.options), 1)
122 self.assertEqual(response.options[0].data, self._servername.encode('ascii'))