From: Remi Gacogne Date: Thu, 16 Nov 2023 14:47:21 +0000 (+0100) Subject: dnsdist: Add regression tests for the new multiple strings syntax X-Git-Tag: dnsdist-1.9.0-alpha4~26^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bebf05ff78fdfd9fa3e4e9251ff9dcf84c2b8a2;p=thirdparty%2Fpdns.git dnsdist: Add regression tests for the new multiple strings syntax --- diff --git a/regression-tests.dnsdist/test_Basics.py b/regression-tests.dnsdist/test_Basics.py index b04debc9a8..241ca32692 100644 --- a/regression-tests.dnsdist/test_Basics.py +++ b/regression-tests.dnsdist/test_Basics.py @@ -13,7 +13,7 @@ class TestBasics(DNSDistTest): mySMN = newSuffixMatchNode() mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com.")) addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(DNSRCode.NOTIMP)) - addAction(SuffixMatchNodeRule("drop.test.powerdns.com."), DropAction()) + addAction(SuffixMatchNodeRule({"drop.test.powerdns.com.", "drop2.test.powerdns.com."}), DropAction()) addAction(AndRule({QTypeRule(DNSQType.A),QNameRule("ds9a.nl")}), SpoofAction("1.2.3.4")) addAction(newDNSName("dnsname.addaction.powerdns.com."), RCodeAction(DNSRCode.REFUSED)) addAction({newDNSName("dnsname-table1.addaction.powerdns.com."), newDNSName("dnsname-table2.addaction.powerdns.com.")}, RCodeAction(DNSRCode.REFUSED)) @@ -27,12 +27,12 @@ class TestBasics(DNSDistTest): which is dropped by configuration. We expect no response. """ - name = 'drop.test.powerdns.com.' - query = dns.message.make_query(name, 'A', 'IN') - for method in ("sendUDPQuery", "sendTCPQuery"): - sender = getattr(self, method) - (_, receivedResponse) = sender(query, response=None, useQueue=False) - self.assertEqual(receivedResponse, None) + for name in ['drop.test.powerdns.com.', 'drop2.test.powerdns.com.']: + query = dns.message.make_query(name, 'A', 'IN') + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None, useQueue=False) + self.assertEqual(receivedResponse, None) def testAWithECS(self): """ diff --git a/regression-tests.dnsdist/test_RulesActions.py b/regression-tests.dnsdist/test_RulesActions.py index 0dfbd822ca..bdabfc3b49 100644 --- a/regression-tests.dnsdist/test_RulesActions.py +++ b/regression-tests.dnsdist/test_RulesActions.py @@ -782,6 +782,50 @@ class TestAdvancedNMGAddNMG(DNSDistTest): (_,receivedResponse) = sender(query, response=expectedResponse, useQueue=False) self.assertEqual(receivedResponse, expectedResponse) +class TestAdvancedNMGRuleFromString(DNSDistTest): + + _config_template = """ + addAction(NotRule(NetmaskGroupRule('192.0.2.1')), RCodeAction(DNSRCode.REFUSED)) + newServer{address="127.0.0.1:%s"} + """ + + def testAdvancedNMGRule(self): + """ + Advanced: NMGRule (from string) should refuse our queries + """ + name = 'nmgrule-from-string.advanced.tests.powerdns.com.' + query = dns.message.make_query(name, 'A', 'IN') + query.flags &= ~dns.flags.RD + expectedResponse = dns.message.make_response(query) + expectedResponse.set_rcode(dns.rcode.REFUSED) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None, useQueue=False) + self.assertEqual(receivedResponse, expectedResponse) + +class TestAdvancedNMGRuleFromMultipleStrings(DNSDistTest): + + _config_template = """ + addAction(NotRule(NetmaskGroupRule({'192.0.2.1', '192.0.2.128/25'})), RCodeAction(DNSRCode.REFUSED)) + newServer{address="127.0.0.1:%s"} + """ + + def testAdvancedNMGRule(self): + """ + Advanced: NMGRule (from multiple strings) should refuse our queries + """ + name = 'nmgrule-from-multiple-strings.advanced.tests.powerdns.com.' + query = dns.message.make_query(name, 'A', 'IN') + query.flags &= ~dns.flags.RD + expectedResponse = dns.message.make_response(query) + expectedResponse.set_rcode(dns.rcode.REFUSED) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None, useQueue=False) + self.assertEqual(receivedResponse, expectedResponse) + class TestDSTPortRule(DNSDistTest): _config_params = ['_dnsDistPort', '_testServerPort']