]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
expand LUA createForward/Reverse testing
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Mon, 31 May 2021 10:51:18 +0000 (12:51 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Sun, 6 Jun 2021 17:40:46 +0000 (19:40 +0200)
regression-tests.auth-py/test_LuaRecords.py

index 8dfae1dd25c03f2b6054ff06d39f9a6e5d813939..f67bea8ef9e7726630b800b042a9c2f8be6b41ca 100644 (file)
@@ -117,9 +117,18 @@ any              IN           TXT "hello there"
 
 resolve          IN    LUA    A   ";local r=resolve('localhost', 1) local t={{}} for _,v in ipairs(r) do table.insert(t, v:toString()) end return t"
 
-*.createforward  IN    LUA    A   "createForward()"
+*.createforward  IN    LUA    A     "createForward()"
+*.createreverse  IN    LUA    PTR   "createReverse('%5%.example.com')"
+*.createreverse6 IN    LUA    PTR   "createReverse6('%33%.example.com')"
 
         """,
+        'createforward6.example.org': """
+createforward6.example.org.                 3600 IN SOA  {soa}
+createforward6.example.org.                 3600 IN NS   ns1.example.org.
+createforward6.example.org.                 3600 IN NS   ns2.example.org.
+*                                                IN    LUA    AAAA  "createForward6()"
+        """
+# the separate createforward6 zone is because some of the code in lua-record.cc insists on working relatively to the zone apex
     }
     _web_rrsets = []
 
@@ -614,39 +623,50 @@ resolve          IN    LUA    A   ";local r=resolve('localhost', 1) local t={{}}
         self.assertRcodeEqual(res, dns.rcode.NOERROR)
         self.assertEqual(res.answer, response.answer)
 
-    def testCreateForward(self):
-        name_suffix = '.createforward.example.org.'
-
-        name_expected = {
-            "1.2.3.4": "1.2.3.4",
-            "1.2.3.4.static": "1.2.3.4",
-            "1.2.3.4.5.6": "1.2.3.4",
-            "invalid.1.2.3.4": "0.0.0.0",
-            "invalid": "0.0.0.0",
-            "1-2-3-4": "1.2.3.4",
-            "1-2-3-4.foo": "1.2.3.4",
-            "1-2-3-4.foo.bar": "0.0.0.0",
-            "1-2-3-4.foo.bar.baz": "0.0.0.0",
-            "1-2-3-4.foo.bar.baz.quux": "0.0.0.0",
-            "ip-1-2-3-4": "1.2.3.4",
-            "ip-is-here-for-you-1-2-3-4": "1.2.3.4",
-            "ip40414243": "64.65.66.67",
-            "ipp40414243": "0.0.0.0",
-            "ip4041424": "0.0.0.0",
+    def testCreateForwardAndReverse(self):
+        expected = {
+            ".createforward.example.org." : (dns.rdatatype.A, {
+                "1.2.3.4": "1.2.3.4",
+                "1.2.3.4.static": "1.2.3.4",
+                "1.2.3.4.5.6": "1.2.3.4",
+                "invalid.1.2.3.4": "0.0.0.0",
+                "invalid": "0.0.0.0",
+                "1-2-3-4": "1.2.3.4",
+                "1-2-3-4.foo": "1.2.3.4",
+                "1-2-3-4.foo.bar": "0.0.0.0",
+                "1-2-3-4.foo.bar.baz": "0.0.0.0",
+                "1-2-3-4.foo.bar.baz.quux": "0.0.0.0",
+                "ip-1-2-3-4": "1.2.3.4",
+                "ip-is-here-for-you-1-2-3-4": "1.2.3.4",
+                "ip40414243": "64.65.66.67",
+                "ipp40414243": "0.0.0.0",
+                "ip4041424": "0.0.0.0",
+            }),
+            ".createreverse.example.org." : (dns.rdatatype.PTR, {
+                "4.3.2.1": "1-2-3-4.example.com."
+            }),
+            ".createforward6.example.org." : (dns.rdatatype.AAAA, {
+                "2001--db8" : "2001::db8"
+            }),
+            ".createreverse6.example.org." : (dns.rdatatype.PTR, {
+                "8.b.d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.2" : "2001--db8.example.com."
+            })
         }
 
-        for k, v in name_expected.items():
-            name = k + name_suffix
+        for suffix, v in expected.items():
+            qtype, pairs = v
+            for prefix, target in pairs.items():
+                name = prefix + suffix
 
-            query = dns.message.make_query(name, 'A')
-            response = dns.message.make_response(query)
-            response.answer.append(dns.rrset.from_text(
-                name, 0, dns.rdataclass.IN, dns.rdatatype.A, v))
+                query = dns.message.make_query(name, qtype)
+                response = dns.message.make_response(query)
+                response.answer.append(dns.rrset.from_text(
+                    name, 0, dns.rdataclass.IN, qtype, target))
 
-            res = self.sendUDPQuery(query)
-            print(res)
-            self.assertRcodeEqual(res, dns.rcode.NOERROR)
-            self.assertEqual(res.answer, response.answer)
+                res = self.sendUDPQuery(query)
+                print(res)
+                self.assertRcodeEqual(res, dns.rcode.NOERROR)
+                self.assertEqual(res.answer, response.answer)
 
 
 if __name__ == '__main__':