commit e9e0ee3: [Test] Start write tests for external maps
Vsevolod Stakhov
vsevolod at rspamd.com
Sat Nov 19 20:28:15 UTC 2022
Author: Vsevolod Stakhov
Date: 2022-11-12 15:53:56 +0000
URL: https://github.com/rspamd/rspamd/commit/e9e0ee39de0c5ee1143edf495908820eb31e116a
[Test] Start write tests for external maps
---
test/functional/cases/001_merged/101_lua.robot | 4 ++++
test/functional/cases/001_merged/__init__.robot | 25 ++++++++++++++++++++++++-
test/functional/lua/maps_kv.lua | 24 ++++++++++++++++++++++++
test/functional/util/dummy_http.py | 3 +++
4 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/test/functional/cases/001_merged/101_lua.robot b/test/functional/cases/001_merged/101_lua.robot
index ac4f8677a..5d70feea2 100644
--- a/test/functional/cases/001_merged/101_lua.robot
+++ b/test/functional/cases/001_merged/101_lua.robot
@@ -44,3 +44,7 @@ Rule conditions
Expect Symbol With Option ANY_A hello3
Expect Symbol With Option ANY_A hello1
Expect Symbol With Option ANY_A hello2
+
+External Maps Simple
+ Scan File ${MESSAGE} Settings={symbols_enabled = [EXTERNAL_MAP]}
+ Expect Symbol With Exact Options EXTERNAL_MAP +hello
\ No newline at end of file
diff --git a/test/functional/cases/001_merged/__init__.robot b/test/functional/cases/001_merged/__init__.robot
index 7f2c7bb43..350e27243 100644
--- a/test/functional/cases/001_merged/__init__.robot
+++ b/test/functional/cases/001_merged/__init__.robot
@@ -1,5 +1,5 @@
*** Settings ***
-Suite Setup Rspamd Redis Setup
+Suite Setup Multi Setup
Suite Teardown Rspamd Redis Teardown
Library ${RSPAMD_TESTDIR}/lib/rspamd.py
Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot
@@ -13,3 +13,26 @@ ${RSPAMD_MAP_MAP} ${RSPAMD_TESTDIR}/configs/maps/map.list
${RSPAMD_RADIX_MAP} ${RSPAMD_TESTDIR}/configs/maps/ip2.list
${RSPAMD_REGEXP_MAP} ${RSPAMD_TESTDIR}/configs/maps/regexp.list
${RSPAMD_SCOPE} Suite
+
+*** Keywords ***
+Multi Setup
+ Run Redis
+ Run Dummy Http
+ Run Dummy Https
+ Rspamd Setup
+
+Multi Teardown
+ Rspamd Teardown
+ ${http_pid} = Get File /tmp/dummy_http.pid
+ Shutdown Process With Children ${http_pid}
+ ${https_pid} = Get File /tmp/dummy_https.pid
+ Shutdown Process With Children ${https_pid}
+ Redis Teardown
+
+Run Dummy Http
+ ${result} = Start Process ${RSPAMD_TESTDIR}/util/dummy_http.py
+ Wait Until Created /tmp/dummy_http.pid
+
+Run Dummy Https
+ ${result} = Start Process ${RSPAMD_TESTDIR}/util/dummy_https.py ${RSPAMD_TESTDIR}/util/server.pem
+ Wait Until Created /tmp/dummy_https.pid
\ No newline at end of file
diff --git a/test/functional/lua/maps_kv.lua b/test/functional/lua/maps_kv.lua
index a62d25ddd..0b1b535bf 100644
--- a/test/functional/lua/maps_kv.lua
+++ b/test/functional/lua/maps_kv.lua
@@ -1,5 +1,6 @@
local rspamd_ip = require 'rspamd_ip'
local rspamd_logger = require 'rspamd_logger'
+local lua_maps = require "lua_maps"
local radix_map = rspamd_config:add_map ({
url = rspamd_env.RADIX_MAP,
@@ -68,3 +69,26 @@ rspamd_config:register_symbol({
return true, 'no worry'
end,
})
+
+local simple_ext_map = lua_maps.map_add_from_ucl({
+ external = true,
+ backend = "http://localhost:18080/map-simple",
+ method = "body",
+ encode = "json",
+}, '', 'external map')
+rspamd_config:register_symbol({
+ name = 'EXTERNAL_MAP',
+ score = 1.0,
+ callback = function(task)
+ local function cb(res, data, code)
+ if res then
+ task:insert_result('EXTERNAL_MAP', string.format('+%s', data))
+ else
+ task:insert_result('EXTERNAL_MAP', string.format('-%s:%s', code, data))
+ end
+ end
+ simple_ext_map:get_key({
+ key = "value",
+ }, cb, task)
+ end,
+})
diff --git a/test/functional/util/dummy_http.py b/test/functional/util/dummy_http.py
index 4bec24119..c683d66a2 100755
--- a/test/functional/util/dummy_http.py
+++ b/test/functional/util/dummy_http.py
@@ -89,6 +89,9 @@ class MyHandler(http.server.BaseHTTPRequestHandler):
if self.path == "/content-length":
self.send_header("Content-Length", str(len(response)))
+ if self.path == "/map-simple":
+ response = "hello"
+
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(response)
More information about the Commits
mailing list