]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - regression-tests.dnsdist/test_EDNSOptions.py
Merge pull request #14171 from romeroalx/build-images-gh-actions
[thirdparty/pdns.git] / regression-tests.dnsdist / test_EDNSOptions.py
index f1e386e82546fc40a81ab819f370e54903f972e4..a200596aa2e7ab0f799ecc5653bc651adcfb7cc7 100644 (file)
@@ -8,7 +8,7 @@ class EDNSOptionsBase(DNSDistTest):
     _ednsTestFunction = """
     function testEDNSOptions(dq)
       local options = dq:getEDNSOptions()
-      local qname = dq.qname:toString()
+      local qname = tostring(dq.qname)
 
       if string.match(qname, 'noedns') then
         if next(options) ~= nil then
@@ -58,6 +58,43 @@ class EDNSOptionsBase(DNSDistTest):
 
       return DNSAction.None, ""
 
+    end
+
+    function testEDNSOptionsInResponses(dr)
+      local options = dr:getEDNSOptions()
+      local qname = tostring(dr.qname)
+
+      if string.match(qname, 'multiplecookies') then
+        return DNSAction.None, ""
+      elseif string.match(qname, 'cookie') then
+        if options[EDNSOptionCode.COOKIE] == nil then
+          return DNSAction.Spoof, "192.0.2.1"
+        end
+        if options[EDNSOptionCode.COOKIE]:count() ~= 1 or options[EDNSOptionCode.COOKIE]:getValues()[1]:len() ~= 16 then
+          return DNSAction.Spoof, "192.0.2.2"
+        end
+      end
+
+      if string.match(qname, 'ecs4') then
+        if options[EDNSOptionCode.ECS] == nil then
+          return DNSAction.Spoof, "192.0.2.51"
+        end
+        if options[EDNSOptionCode.ECS]:count() ~= 1 or options[EDNSOptionCode.ECS]:getValues()[1]:len() ~= 7 then
+          return DNSAction.Spoof, "192.0.2.52"
+        end
+      end
+
+      if string.match(qname, 'ecs6') then
+        if options[EDNSOptionCode.ECS] == nil then
+          return DNSAction.Spoof, "192.0.2.101"
+        end
+        if options[EDNSOptionCode.ECS]:count() ~= 1 or options[EDNSOptionCode.ECS]:getValues()[1]:len() ~= 11 then
+          return DNSAction.Spoof, "192.0.2.102"
+        end
+      end
+
+      return DNSAction.None, ""
+
     end
     """
 
@@ -92,8 +129,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testCookie(self):
         """
@@ -116,8 +153,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS4(self):
         """
@@ -140,8 +177,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS6(self):
         """
@@ -164,8 +201,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS6Cookie(self):
         """
@@ -189,8 +226,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testMultiCookiesECS6(self):
         """
@@ -215,8 +252,8 @@ class TestEDNSOptions(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
 class TestEDNSOptionsAddingECS(EDNSOptionsBase):
 
@@ -224,6 +261,7 @@ class TestEDNSOptionsAddingECS(EDNSOptionsBase):
     %s
 
     addAction(AllRule(), LuaAction(testEDNSOptions))
+    addResponseAction("ednsoptions-ecs.tests.powerdns.com.", LuaResponseAction(testEDNSOptionsInResponses))
 
     newServer{address="127.0.0.1:%s", useClientSubnet=true}
     """
@@ -382,8 +420,8 @@ class TestEDNSOptionsAddingECS(EDNSOptionsBase):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
 class TestEDNSOptionsLuaFFI(DNSDistTest):
 
@@ -544,8 +582,8 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testCookieFFI(self):
         """
@@ -568,8 +606,8 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS4FFI(self):
         """
@@ -592,8 +630,8 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS6FFI(self):
         """
@@ -616,8 +654,8 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testECS6CookieFFI(self):
         """
@@ -641,8 +679,8 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)
 
     def testMultiCookiesECS6FFI(self):
         """
@@ -667,5 +705,5 @@ class TestEDNSOptionsLuaFFI(DNSDistTest):
             self.assertTrue(receivedQuery)
             self.assertTrue(receivedResponse)
             receivedQuery.id = query.id
-            self.assertEquals(receivedQuery, query)
-            self.assertEquals(receivedResponse, response)
+            self.assertEqual(receivedQuery, query)
+            self.assertEqual(receivedResponse, response)