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