]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/test-lua_auth4_cc.cc
Merge pull request #9099 from PowerDNS/omoerbeek-patch-1
[thirdparty/pdns.git] / pdns / test-lua_auth4_cc.cc
CommitLineData
0a578d9d
AT
1#define BOOST_TEST_DYN_LINK
2#define BOOST_TEST_NO_MAIN
3
4#ifdef HAVE_CONFIG_H
5#include "config.h"
6#endif
7#include <boost/test/unit_test.hpp>
8#include "arguments.hh"
9#include <utility>
10#include "lua-auth4.hh"
11
12struct SetupArgFixture {
13 SetupArgFixture() {
14 ::arg().set("resolver") = "127.0.0.1";
15 };
16};
17
18BOOST_FIXTURE_TEST_SUITE(lua_auth4_cc, SetupArgFixture)
19
20BOOST_AUTO_TEST_CASE(test_prequery) {
21 const std::string script =
22"function prequery(q)\n"
23" if q.qdomain == newDN(\"mod.unit.test.\")\n"
24" then\n"
25" return true\n"
26" end\n"
27" return false\n"
28"end";
29 AuthLua4 lua;
c2826d2e
RG
30 DNSPacket p(true);
31 p.qdomain = DNSName("mod.unit.test.");
0a578d9d 32 lua.loadString(script);
c2826d2e 33 std::unique_ptr<DNSPacket> r{nullptr};
0a578d9d
AT
34 try {
35 r = lua.prequery(p);
c2826d2e 36 BOOST_REQUIRE(r != nullptr);
0a578d9d
AT
37 BOOST_CHECK_EQUAL(r->qdomain.toString(), "mod.unit.test.");
38 } catch (const LuaContext::ExecutionErrorException& e) {
39 try {
40 std::rethrow_if_nested(e);
41 } catch(const std::exception& exp) {
e6a9dde5 42 g_log<<"Extra info: "<<exp.what();
0a578d9d
AT
43 }
44 }
0a578d9d
AT
45}
46
47BOOST_AUTO_TEST_CASE(test_updatePolicy) {
48 const std::string script =
49"function updatepolicy(query)\n"
50" princ = query:getPeerPrincipal()\n"
51" if princ == \"admin@DOMAIN\" or tostring(query:getRemote()) == \"192.168.1.1\"\n"
52" then\n"
53" return true\n"
54" end\n"
55" return false\n"
56"end";
57 AuthLua4 lua;
c2826d2e 58 DNSPacket p(true);
0a578d9d
AT
59 ComboAddress ca(std::string("192.168.1.1"));
60 lua.loadString(script);
c2826d2e
RG
61 p.setRemote(&ca);
62 p.d_peer_principal = "admin@DOMAIN";
0a578d9d 63 BOOST_CHECK_EQUAL(lua.updatePolicy(DNSName("mod.example.com."), QType(QType::A), DNSName("example.com."), p), true);
c2826d2e 64 p.d_peer_principal = "";
0a578d9d
AT
65 BOOST_CHECK_EQUAL(lua.updatePolicy(DNSName("mod.example.com."), QType(QType::A), DNSName("example.com."), p), true);
66 ca = ComboAddress(std::string("192.168.1.2"));
c2826d2e 67 p.setRemote(&ca);
0a578d9d 68 BOOST_CHECK_EQUAL(lua.updatePolicy(DNSName("mod.example.com."), QType(QType::A), DNSName("example.com."), p), false);
0a578d9d
AT
69}
70
71BOOST_AUTO_TEST_SUITE_END()