From: Remi Gacogne Date: Fri, 10 Nov 2023 08:38:14 +0000 (+0100) Subject: dnsdist: Test existing EDE in backend response X-Git-Tag: rec-5.0.0-rc1~48^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0275d6cbbe3f814acac5cfd0cd8007741a98699;p=thirdparty%2Fpdns.git dnsdist: Test existing EDE in backend response --- diff --git a/regression-tests.dnsdist/test_EDE.py b/regression-tests.dnsdist/test_EDE.py index a681424f7e..e45ded5e17 100644 --- a/regression-tests.dnsdist/test_EDE.py +++ b/regression-tests.dnsdist/test_EDE.py @@ -90,6 +90,46 @@ class TestBasics(DNSDistTest): (_, receivedResponse) = sender(query, response=None, useQueue=False) self.checkMessageEDNS(expectedResponse, receivedResponse) + def testExtendedErrorBackendResponseWithExistingEDE(self): + """ + EDE: Backend response with existing EDE + """ + name = 'backend-response-existing-ede.ede.tests.powerdns.com.' + ede = extendederrors.ExtendedErrorOption(16, b'my extended error status') + query = dns.message.make_query(name, 'A', 'IN', use_edns=True) + + backendResponse = dns.message.make_response(query) + backendEDE = extendederrors.ExtendedErrorOption(3, b'Stale answer') + backendResponse.use_edns(edns=True, payload=4096, options=[backendEDE]) + rrset = dns.rrset.from_text(name, + 60, + dns.rdataclass.IN, + dns.rdatatype.A, + '127.0.0.1') + + backendResponse.answer.append(rrset) + expectedResponse = dns.message.make_response(query) + expectedResponse.use_edns(edns=True, payload=4096, options=[ede]) + rrset = dns.rrset.from_text(name, + 60, + dns.rdataclass.IN, + dns.rdatatype.A, + '127.0.0.1') + expectedResponse.answer.append(rrset) + + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (receivedQuery, receivedResponse) = sender(query, backendResponse) + receivedQuery.id = query.id + self.assertEqual(query, receivedQuery) + self.checkMessageEDNS(expectedResponse, receivedResponse) + + # testing the cache + for method in ("sendUDPQuery", "sendTCPQuery"): + sender = getattr(self, method) + (_, receivedResponse) = sender(query, response=None, useQueue=False) + self.checkMessageEDNS(expectedResponse, receivedResponse) + def testExtendedErrorSelfAnswered(self): """ EDE: Self-answered