From: Remi Gacogne Date: Thu, 21 Feb 2019 11:26:50 +0000 (+0100) Subject: dnsdist: Add regression tests for EDNSVersionRule and ERCodeAction X-Git-Tag: auth-4.2.0-beta1~9^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f61e61498302e0cca6089d9bcb519ee74b3dc574;p=thirdparty%2Fpdns.git dnsdist: Add regression tests for EDNSVersionRule and ERCodeAction --- 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)