]>
Commit | Line | Data |
---|---|---|
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 | ||
12 | struct SetupArgFixture { | |
13 | SetupArgFixture() { | |
14 | ::arg().set("resolver") = "127.0.0.1"; | |
15 | }; | |
16 | }; | |
17 | ||
18 | BOOST_FIXTURE_TEST_SUITE(lua_auth4_cc, SetupArgFixture) | |
19 | ||
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" | |
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 | ||
47 | BOOST_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 | ||
71 | BOOST_AUTO_TEST_SUITE_END() |