]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.recursor-dnssec/test_EDNS.py
Merge pull request #9744 from rgacogne/rec-near-miss-to-tcp
[thirdparty/pdns.git] / regression-tests.recursor-dnssec / test_EDNS.py
1 import dns
2 import os
3 import socket
4 import struct
5 import threading
6 import time
7
8 from recursortests import RecursorTest
9 from twisted.internet.protocol import DatagramProtocol
10 from twisted.internet import reactor
11
12 ednsBufferReactorRunning = False
13
14 class EDNSTest(RecursorTest):
15 """
16 These tests are designed to check if we respond correctly to EDNS queries
17 from clients. Note that buffer-size tests go into test_EDNSBufferSize
18 """
19 _confdir = 'EDNS'
20
21 def testEDNSUnknownOpt(self):
22 """
23 Ensure the recursor does not reply with an unknown option when one is
24 sent in the query
25 """
26 unknownOpt = dns.edns.GenericOption(65005, b'1234567890')
27 query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=0,
28 payload=4096, options=[unknownOpt])
29 response = self.sendUDPQuery(query)
30 self.assertRcodeEqual(response, dns.rcode.NOERROR)
31 self.assertEqual(response.options, ())
32
33 def testEDNSBadVers(self):
34 """
35 Ensure the rcode is BADVERS when we send an unsupported EDNS version and
36 the query is not processed any further.
37 """
38 query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=5,
39 payload=4096)
40 response = self.sendUDPQuery(query)
41 self.assertRcodeEqual(response, dns.rcode.BADVERS)
42 self.assertEqual(response.answer, [])