]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_DOH3.py
3 import clientsubnetoption
5 from dnsdisttests
import DNSDistTest
6 from dnsdisttests
import pickAvailablePort
7 from quictests
import QUICTests
, QUICWithCacheTests
, QUICACLTests
10 class TestDOH3(QUICTests
, DNSDistTest
):
11 _serverKey
= 'server.key'
12 _serverCert
= 'server.chain'
13 _serverName
= 'tls.tests.dnsdist.org'
15 _doqServerPort
= pickAvailablePort()
16 _dohBaseURL
= ("https://%s:%d/" % (_serverName
, _doqServerPort
))
17 _config_template
= """
18 newServer{address="127.0.0.1:%d"}
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'))
25 addDOH3Local("127.0.0.1:%d", "%s", "%s", {keyLogFile='/tmp/keys'})
27 _config_params
= ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
30 def getQUICConnection(self
):
31 return self
.getDOQConnection(self
._doqServerPort
, self
._caCert
)
33 def sendQUICQuery(self
, query
, response
=None, useQueue
=True, connection
=None):
34 return self
.sendDOH3Query(self
._doqServerPort
, self
._dohBaseURL
, query
, response
=response
, caFile
=self
._caCert
, useQueue
=useQueue
, serverName
=self
._serverName
, connection
=connection
)
36 class TestDOH3ACL(QUICACLTests
, DNSDistTest
):
37 _serverKey
= 'server.key'
38 _serverCert
= 'server.chain'
39 _serverName
= 'tls.tests.dnsdist.org'
41 _doqServerPort
= pickAvailablePort()
42 _dohBaseURL
= ("https://%s:%d/" % (_serverName
, _doqServerPort
))
43 _config_template
= """
44 newServer{address="127.0.0.1:%d"}
46 setACL("192.0.2.1/32")
47 addDOH3Local("127.0.0.1:%d", "%s", "%s", {keyLogFile='/tmp/keys'})
49 _config_params
= ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
52 def getQUICConnection(self
):
53 return self
.getDOQConnection(self
._doqServerPort
, self
._caCert
)
55 def sendQUICQuery(self
, query
, response
=None, useQueue
=True, connection
=None):
56 return self
.sendDOH3Query(self
._doqServerPort
, self
._dohBaseURL
, query
, response
=response
, caFile
=self
._caCert
, useQueue
=useQueue
, serverName
=self
._serverName
, connection
=connection
)
58 class TestDOH3Specifics(DNSDistTest
):
59 _serverKey
= 'server.key'
60 _serverCert
= 'server.chain'
61 _serverName
= 'tls.tests.dnsdist.org'
63 _doqServerPort
= pickAvailablePort()
64 _dohBaseURL
= ("https://%s:%d/" % (_serverName
, _doqServerPort
))
65 _config_template
= """
66 newServer{address="127.0.0.1:%d"}
68 addDOH3Local("127.0.0.1:%d", "%s", "%s", {keyLogFile='/tmp/keys'})
70 _config_params
= ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
73 def testDOH3Post(self
):
75 QUIC: Simple POST query
77 name
= 'simple.post.doq.tests.powerdns.com.'
78 query
= dns
.message
.make_query(name
, 'A', 'IN', use_edns
=False)
80 expectedQuery
= dns
.message
.make_query(name
, 'A', 'IN', use_edns
=True, payload
=4096)
82 response
= dns
.message
.make_response(query
)
83 rrset
= dns
.rrset
.from_text(name
,
88 response
.answer
.append(rrset
)
89 (receivedQuery
, receivedResponse
) = self
.sendDOH3Query(self
._doqServerPort
, self
._dohBaseURL
, query
, response
=response
, caFile
=self
._caCert
, serverName
=self
._serverName
, post
=True)
90 self
.assertTrue(receivedQuery
)
91 self
.assertTrue(receivedResponse
)
92 receivedQuery
.id = expectedQuery
.id
93 self
.assertEqual(expectedQuery
, receivedQuery
)
94 self
.assertEqual(receivedResponse
, response
)