summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAndrew Lewis <nerf@judo.za.org>2017-02-27 18:11:44 +0200
committerAndrew Lewis <nerf@judo.za.org>2017-02-27 18:11:44 +0200
commita2e7253038e6dcf6f66040412e45e7ab0715af83 (patch)
tree541f7fce48416c927339eee9b278361b14490cf4 /test
parentf42f2e524ff25001686e7c4c2dc7c40563dff3b8 (diff)
downloadrspamd-a2e7253038e6dcf6f66040412e45e7ab0715af83.tar.gz
rspamd-a2e7253038e6dcf6f66040412e45e7ab0715af83.zip
[Test] Test map key values
Diffstat (limited to 'test')
-rw-r--r--test/functional/cases/101_lua.robot23
-rw-r--r--test/functional/configs/maps/ip2.list3
-rw-r--r--test/functional/configs/maps/map.list3
-rw-r--r--test/functional/configs/maps/regexp.list3
-rw-r--r--test/functional/lua/maps_kv.lua70
5 files changed, 102 insertions, 0 deletions
diff --git a/test/functional/cases/101_lua.robot b/test/functional/cases/101_lua.robot
index 867ecd2cd..f3121daf8 100644
--- a/test/functional/cases/101_lua.robot
+++ b/test/functional/cases/101_lua.robot
@@ -6,7 +6,10 @@ Variables ${TESTDIR}/lib/vars.py
*** Variables ***
${CONFIG} ${TESTDIR}/configs/lua_test.conf
+${MAP_MAP} ${TESTDIR}/configs/maps/map.list
${MESSAGE} ${TESTDIR}/messages/spam_message.eml
+${RADIX_MAP} ${TESTDIR}/configs/maps/ip2.list
+${REGEXP_MAP} ${TESTDIR}/configs/maps/regexp.list
${RSPAMD_SCOPE} Test
${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat
@@ -45,12 +48,32 @@ Hashes
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TEST_HASHES (1.00)[no worry]
+Maps Key Values
+ [Setup] Lua Replace Setup ${TESTDIR}/lua/maps_kv.lua
+ [Teardown] Lua Replace Teardown
+ ${result} = Scan Message With Rspamc ${MESSAGE}
+ Check Rspamc ${result} RADIX_KV (1.00)[no worry]
+ Should Contain ${result.stdout} REGEXP_KV (1.00)[no worry]
+ Should Contain ${result.stdout} MAP_KV (1.00)[no worry]
+
*** Keywords ***
Lua Setup
[Arguments] ${LUA_SCRIPT}
Set Test Variable ${LUA_SCRIPT}
Generic Setup
+Lua Replace Setup
+ [Arguments] ${LUA_SCRIPT_UNESC}
+ ${LUA_SCRIPT} = Make Temporary File
+ ${lua} = Get File ${LUA_SCRIPT_UNESC}
+ ${lua} = Replace Variables ${lua}
+ Create File ${LUA_SCRIPT} ${lua}
+ Lua Setup ${LUA_SCRIPT}
+
+Lua Replace Teardown
+ Remove File ${LUA_SCRIPT}
+ Normal Teardown
+
TLD Setup
[Arguments] ${LUA_SCRIPT}
Set Test Variable ${URL_TLD} ${TESTDIR}/../../contrib/publicsuffix/effective_tld_names.dat
diff --git a/test/functional/configs/maps/ip2.list b/test/functional/configs/maps/ip2.list
new file mode 100644
index 000000000..7d99d287c
--- /dev/null
+++ b/test/functional/configs/maps/ip2.list
@@ -0,0 +1,3 @@
+8.8.8.8 test one
+::1 another
+192.168.1.1
diff --git a/test/functional/configs/maps/map.list b/test/functional/configs/maps/map.list
new file mode 100644
index 000000000..8e68bab62
--- /dev/null
+++ b/test/functional/configs/maps/map.list
@@ -0,0 +1,3 @@
+foo bar
+asdf.example.com value
+asdf
diff --git a/test/functional/configs/maps/regexp.list b/test/functional/configs/maps/regexp.list
index 0f3ef27bf..ceb2bf5ab 100644
--- a/test/functional/configs/maps/regexp.list
+++ b/test/functional/configs/maps/regexp.list
@@ -1,2 +1,5 @@
/^.*@example.com/i
/^user.*@.*com/i
+/foo/ bar
+/asdf\.example\.com/ value
+/^asdf$/
diff --git a/test/functional/lua/maps_kv.lua b/test/functional/lua/maps_kv.lua
new file mode 100644
index 000000000..3decc48c2
--- /dev/null
+++ b/test/functional/lua/maps_kv.lua
@@ -0,0 +1,70 @@
+local rspamd_ip = require 'rspamd_ip'
+local rspamd_logger = require 'rspamd_logger'
+
+local radix_map = rspamd_config:add_map ({
+ url = '${RADIX_MAP}',
+ type = 'radix',
+})
+
+local map_map = rspamd_config:add_map ({
+ url = '${MAP_MAP}',
+ type = 'map',
+})
+
+local regexp_map = rspamd_config:add_map ({
+ url = '${REGEXP_MAP}',
+ type = 'regexp',
+})
+
+rspamd_config:register_symbol({
+ name = 'RADIX_KV',
+ score = 1.0,
+ callback = function()
+ local sip = {'8.8.8.8', '::1', '192.168.1.1', '10.0.1.1'}
+ local expected = {'test one', 'another', '1', false}
+ for i = 1, #sip do
+ if (radix_map:get_key(rspamd_ip.from_string(sip[i])) ~= expected[i]) then
+ local rip = rspamd_ip.from_string(sip[i])
+ local val = radix_map:get_key(rip)
+ return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', rip, type(rip), val, type(val), expected[i])
+ end
+ if (radix_map:get_key(sip[i]) ~= expected[i]) then
+ local val = radix_map:get_key(sip[i])
+ return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', sip[i], type(sip[i]), val, type(val), expected[i])
+ end
+ end
+ return true, 'no worry'
+ end
+})
+
+rspamd_config:register_symbol({
+ name = 'MAP_KV',
+ score = 1.0,
+ callback = function()
+ local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
+ local expected = {'bar', 'value', '', false}
+ for i = 1, #str do
+ if (map_map:get_key(str[i]) ~= expected[i]) then
+ local val = map_map:get_key(str[i])
+ return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', str[i], type(str[i]), val, type(val), expected[i])
+ end
+ end
+ return true, 'no worry'
+ end,
+})
+
+rspamd_config:register_symbol({
+ name = 'REGEXP_KV',
+ score = 1.0,
+ callback = function()
+ local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
+ local expected = {'bar', 'value', '1', false}
+ for i = 1, #str do
+ if (regexp_map:get_key(str[i]) ~= expected[i]) then
+ local val = regexp_map:get_key(str[i])
+ return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', str[i], type(str[i]), val, type(val), expected[i])
+ end
+ end
+ return true, 'no worry'
+ end,
+})