]> git.ipfire.org Git - thirdparty/pdns.git/blame - regression-tests.dnsdist/test_DOH3.py
dnsdist: enable doh3 in our CI
[thirdparty/pdns.git] / regression-tests.dnsdist / test_DOH3.py
CommitLineData
4f0b10a9
CHB
1#!/usr/bin/env python
2import dns
3import clientsubnetoption
4
5from dnsdisttests import DNSDistTest
6from dnsdisttests import pickAvailablePort
7
8import doh3client
9
10class TestDOH3(DNSDistTest):
11 _serverKey = 'server.key'
12 _serverCert = 'server.chain'
13 _serverName = 'tls.tests.dnsdist.org'
14 _caCert = 'ca.pem'
15 _doqServerPort = pickAvailablePort()
16 _dohBaseURL = ("https://%s:%d/" % (_serverName, _doqServerPort))
17 _config_template = """
18 newServer{address="127.0.0.1:%d"}
19
20 addAction("drop.doq.tests.powerdns.com.", DropAction())
21 addAction("refused.doq.tests.powerdns.com.", RCodeAction(DNSRCode.REFUSED))
22 addAction("spoof.doq.tests.powerdns.com.", SpoofAction("1.2.3.4"))
23 addAction("no-backend.doq.tests.powerdns.com.", PoolAction('this-pool-has-no-backend'))
24
25 addDOH3Local("127.0.0.1:%d", "%s", "%s")
26 """
27 _config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
28 _verboseMode = True
29
30 def testDOH3Simple(self):
31 """
32 DOH3: Simple query
33 """
34 name = 'simple.doq.tests.powerdns.com.'
35 query = dns.message.make_query(name, 'A', 'IN', use_edns=False)
36 query.id = 0
37 expectedQuery = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096)
38 expectedQuery.id = 0
39 response = dns.message.make_response(query)
40 rrset = dns.rrset.from_text(name,
41 3600,
42 dns.rdataclass.IN,
43 dns.rdatatype.A,
44 '127.0.0.1')
45 response.answer.append(rrset)
46 (receivedQuery, receivedResponse) = self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, serverName=self._serverName)
47 self.assertTrue(receivedQuery)
48 self.assertTrue(receivedResponse)
49 receivedQuery.id = expectedQuery.id
50 self.assertEqual(expectedQuery, receivedQuery)