]> git.ipfire.org Git - thirdparty/pdns.git/blame - regression-tests.recursor-dnssec/test_RootNXTrust.py
Make sure we can install unsigned packages.
[thirdparty/pdns.git] / regression-tests.recursor-dnssec / test_RootNXTrust.py
CommitLineData
fc89e57c
RG
1import dns
2import requests
3import socket
4from recursortests import RecursorTest
5
6class RootNXTrustRecursorTest(RecursorTest):
7
8 def getOutgoingQueriesCount(self):
9 headers = {'x-api-key': self._apiKey}
10 url = 'http://127.0.0.1:' + str(self._wsPort) + '/api/v1/servers/localhost/statistics'
11 r = requests.get(url, headers=headers, timeout=self._wsTimeout)
12 self.assertTrue(r)
13 self.assertEquals(r.status_code, 200)
14 self.assertTrue(r.json())
15 content = r.json()
16 for entry in content:
17 if entry['name'] == 'all-outqueries':
18 return int(entry['value'])
19
20 return 0
21
22class testRootNXTrustDisabled(RootNXTrustRecursorTest):
23 _confdir = 'RootNXTrustDisabled'
24 _wsPort = 8042
25 _wsTimeout = 2
26 _wsPassword = 'secretpassword'
27 _apiKey = 'secretapikey'
28
29 _config_template = """
30root-nx-trust=no
8949a3e0 31qname-minimization=no
fc89e57c
RG
32webserver=yes
33webserver-port=%d
34webserver-address=127.0.0.1
35webserver-password=%s
36api-key=%s
37""" % (_wsPort, _wsPassword, _apiKey)
38
39 def testRootNXTrust(self):
40 """
41 Check that, with root-nx-trust disabled, we still query the root for www2.nx-example.
42 after receiving a NXD from "." for nx-example. as an answer for www.nx-example.
43 """
44
45 # first query nx.example.
46 before = self.getOutgoingQueriesCount()
47 query = dns.message.make_query('www.nx-example.', 'A')
48 res = self.sendUDPQuery(query)
49
50 self.assertRcodeEqual(res, dns.rcode.NXDOMAIN)
51 print(res)
52 self.assertAuthorityHasSOA(res)
53
54 # check that we sent one query to the root
55 after = self.getOutgoingQueriesCount()
56 self.assertEqual(after, before + 1)
57
58 # then query nx2.example.
59 before = after
60 query = dns.message.make_query('www2.nx-example.', 'A')
61 res = self.sendUDPQuery(query)
62
63 self.assertRcodeEqual(res, dns.rcode.NXDOMAIN)
64 self.assertAuthorityHasSOA(res)
65
66 after = self.getOutgoingQueriesCount()
67 self.assertEqual(after, before + 1)
68
69class testRootNXTrustEnabled(RootNXTrustRecursorTest):
70 _confdir = 'RootNXTrustEnabled'
71 _wsPort = 8042
72 _wsTimeout = 2
73 _wsPassword = 'secretpassword'
74 _apiKey = 'secretapikey'
75
76 _config_template = """
77root-nx-trust=yes
78webserver=yes
79webserver-port=%d
80webserver-address=127.0.0.1
81webserver-password=%s
82api-key=%s
83""" % (_wsPort, _wsPassword, _apiKey)
84
85 def testRootNXTrust(self):
86 """
87 Check that, with root-nx-trust enabled, we don't query the root for www2.nx-example.
88 after receiving a NXD from "." for nx-example. as an answer for www.nx-example.
89 """
90
91 # first query nx.example.
92 before = self.getOutgoingQueriesCount()
93 query = dns.message.make_query('www.nx-example.', 'A')
94 res = self.sendUDPQuery(query)
95
96 self.assertRcodeEqual(res, dns.rcode.NXDOMAIN)
97 print(res)
98 self.assertAuthorityHasSOA(res)
99
100 # check that we sent one query to the root
101 after = self.getOutgoingQueriesCount()
102 self.assertEqual(after, before + 1)
103
104 # then query nx2.example.
105 before = after
106 query = dns.message.make_query('www2.nx-example.', 'A')
107 res = self.sendUDPQuery(query)
108
109 self.assertRcodeEqual(res, dns.rcode.NXDOMAIN)
110 self.assertAuthorityHasSOA(res)
111
112 after = self.getOutgoingQueriesCount()
113 self.assertEqual(after, before)