]>
git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/test-lua_auth4_cc.cc
1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
7 #include <boost/test/unit_test.hpp>
8 #include "arguments.hh"
10 #include "lua-auth4.hh"
12 struct SetupArgFixture
{
14 ::arg().set("resolver") = "127.0.0.1";
18 BOOST_FIXTURE_TEST_SUITE(lua_auth4_cc
, SetupArgFixture
)
20 BOOST_AUTO_TEST_CASE(test_prequery
) {
21 const std::string script
=
22 "function prequery(q)\n"
23 " if q.qdomain == newDN(\"mod.unit.test.\")\n"
30 DNSPacket
*p
= new DNSPacket(true);
31 p
->qdomain
= DNSName("mod.unit.test.");
32 lua
.loadString(script
);
33 DNSPacket
*r
= nullptr;
36 BOOST_CHECK_EQUAL(r
->qdomain
.toString(), "mod.unit.test.");
37 } catch (const LuaContext::ExecutionErrorException
& e
) {
39 std::rethrow_if_nested(e
);
40 } catch(const std::exception
& exp
) {
41 g_log
<<"Extra info: "<<exp
.what();
48 BOOST_AUTO_TEST_CASE(test_updatePolicy
) {
49 const std::string script
=
50 "function updatepolicy(query)\n"
51 " princ = query:getPeerPrincipal()\n"
52 " if princ == \"admin@DOMAIN\" or tostring(query:getRemote()) == \"192.168.1.1\"\n"
59 DNSPacket
*p
= new DNSPacket(true);
60 ComboAddress
ca(std::string("192.168.1.1"));
61 lua
.loadString(script
);
63 p
->d_peer_principal
= "admin@DOMAIN";
64 BOOST_CHECK_EQUAL(lua
.updatePolicy(DNSName("mod.example.com."), QType(QType::A
), DNSName("example.com."), p
), true);
65 p
->d_peer_principal
= "";
66 BOOST_CHECK_EQUAL(lua
.updatePolicy(DNSName("mod.example.com."), QType(QType::A
), DNSName("example.com."), p
), true);
67 ca
= ComboAddress(std::string("192.168.1.2"));
69 BOOST_CHECK_EQUAL(lua
.updatePolicy(DNSName("mod.example.com."), QType(QType::A
), DNSName("example.com."), p
), false);
73 BOOST_AUTO_TEST_SUITE_END()