From 6c88aa063f68239247c685884028870b5c129a2e Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Mon, 31 May 2021 12:51:18 +0200 Subject: [PATCH] expand LUA createForward/Reverse testing --- regression-tests.auth-py/test_LuaRecords.py | 80 +++++++++++++-------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/regression-tests.auth-py/test_LuaRecords.py b/regression-tests.auth-py/test_LuaRecords.py index 8dfae1dd25..f67bea8ef9 100644 --- a/regression-tests.auth-py/test_LuaRecords.py +++ b/regression-tests.auth-py/test_LuaRecords.py @@ -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__': -- 2.47.2