From e9143e937e29baa5b2bb8bb6f46cebc0430bd3da Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Fri, 27 Nov 2020 13:27:45 +0100 Subject: [PATCH] dnsdist: Add TTL test for `SpoofAction` --- regression-tests.dnsdist/test_Spoofing.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/regression-tests.dnsdist/test_Spoofing.py b/regression-tests.dnsdist/test_Spoofing.py index d8ce626f03..ff2675c313 100644 --- a/regression-tests.dnsdist/test_Spoofing.py +++ b/regression-tests.dnsdist/test_Spoofing.py @@ -10,6 +10,7 @@ class TestSpoofingSpoof(DNSDistTest): addAction(makeRule("spoofaction-ad.spoofing.tests.powerdns.com."), SpoofAction({"192.0.2.1", "2001:DB8::1"}, {ad=true})) addAction(makeRule("spoofaction-ra.spoofing.tests.powerdns.com."), SpoofAction({"192.0.2.1", "2001:DB8::1"}, {ra=true})) addAction(makeRule("spoofaction-nora.spoofing.tests.powerdns.com."), SpoofAction({"192.0.2.1", "2001:DB8::1"}, {ra=false})) + addAction(makeRule("spoofaction-ttl.spoofing.tests.powerdns.com."), SpoofAction({"192.0.2.1", "2001:DB8::1"}, {ttl=1500})) addAction(makeRule("cnamespoofaction.spoofing.tests.powerdns.com."), SpoofCNAMEAction("cnameaction.spoofing.tests.powerdns.com.")) addAction("multispoof.spoofing.tests.powerdns.com", SpoofAction({"192.0.2.1", "192.0.2.2", "2001:DB8::1", "2001:DB8::2"})) addAction(AndRule{makeRule("raw.spoofing.tests.powerdns.com"), QTypeRule(DNSQType.A)}, SpoofRawAction("\\192\\000\\002\\001")) @@ -270,6 +271,28 @@ class TestSpoofingSpoof(DNSDistTest): self.assertEquals(expectedResponse, receivedResponse) self.assertEquals(receivedResponse.answer[0].ttl, 60) + def testSpoofActionSetTTL(self): + """ + Spoofing: Spoof via Action, setting the TTL to 1500 + """ + name = 'spoofaction-ttl.spoofing.tests.powerdns.com.' + query = dns.message.make_query(name, 'AAAA', 'IN') + expectedResponse = dns.message.make_response(query) + expectedResponse.flags |= dns.flags.RA + rrset = dns.rrset.from_text(name, + 60, + dns.rdataclass.IN, + dns.rdatatype.AAAA, + '2001:DB8::1') + expectedResponse.answer.append(rrset) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None, useQueue=False) + self.assertTrue(receivedResponse) + self.assertEquals(expectedResponse, receivedResponse) + self.assertEquals(receivedResponse.answer[0].ttl, 1500) + def testSpoofRawAction(self): """ Spoofing: Spoof a response from raw bytes -- 2.47.2