From f61e61498302e0cca6089d9bcb519ee74b3dc574 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 21 Feb 2019 12:26:50 +0100 Subject: [PATCH] dnsdist: Add regression tests for EDNSVersionRule and ERCodeAction --- regression-tests.dnsdist/test_Advanced.py | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/regression-tests.dnsdist/test_Advanced.py b/regression-tests.dnsdist/test_Advanced.py index 441c73f582..cf93eff2b9 100644 --- a/regression-tests.dnsdist/test_Advanced.py +++ b/regression-tests.dnsdist/test_Advanced.py @@ -1714,3 +1714,60 @@ class TestAdvancedEDNSOptionRule(DNSDistTest): receivedQuery.id = query.id self.assertEquals(query, receivedQuery) self.assertEquals(receivedResponse, response) + +class TestAdvancedEDNSVersionnRule(DNSDistTest): + + _config_template = """ + newServer{address="127.0.0.1:%s"} + addAction(EDNSVersionRule(0), ERCodeAction(dnsdist.BADVERS)) + """ + + def testDropped(self): + """ + Advanced: A question with ECS version larger than 0 is dropped + """ + + name = 'ednsversionrule.advanced.tests.powerdns.com.' + + query = dns.message.make_query(name, 'A', 'IN', use_edns=1) + expectedResponse = dns.message.make_response(query) + expectedResponse.set_rcode(dns.rcode.BADVERS) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None) + self.assertEquals(receivedResponse, expectedResponse) + + def testNoEDNS0Pass(self): + """ + Advanced: A question with ECS version 0 goes through + """ + + name = 'ednsversionrule.advanced.tests.powerdns.com.' + + query = dns.message.make_query(name, 'A', 'IN', use_edns=True) + response = dns.message.make_response(query) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (receivedQuery, receivedResponse) = sender(query, response) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(receivedResponse, response) + + def testReplied(self): + """ + Advanced: A question without ECS goes through + """ + + name = 'ednsoptionrule.advanced.tests.powerdns.com.' + + query = dns.message.make_query(name, 'A', 'IN', use_edns=False) + response = dns.message.make_response(query) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (receivedQuery, receivedResponse) = sender(query, response) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(receivedResponse, response) -- 2.47.2