鏡像自
https://github.com/rspamd/rspamd.git
synced 2024-07-29 08:17:22 +02:00
82 行
2.7 KiB
Lua
82 行
2.7 KiB
Lua
local msg
|
|
context("Selectors test", function()
|
|
local rspamd_task = require "rspamd_task"
|
|
local logger = require "rspamd_logger"
|
|
local lua_selectors = require "lua_selectors"
|
|
local test_helper = require "rspamd_test_helper"
|
|
local cfg = rspamd_config
|
|
local task
|
|
|
|
test_helper.init_url_parser()
|
|
|
|
before(function()
|
|
local res
|
|
res,task = rspamd_task.load_from_string(msg, cfg)
|
|
if not res then
|
|
assert_true(false, "failed to load message")
|
|
end
|
|
end)
|
|
|
|
local function check_selector(selector_string)
|
|
local sels = lua_selectors.parse_selector(cfg, selector_string)
|
|
local elts = lua_selectors.process_selectors(task, sels)
|
|
return elts
|
|
end
|
|
|
|
test("custom selector", function()
|
|
lua_selectors.register_extractor(rspamd_config, "get_something", {
|
|
get_value = function(task, args) -- mandatory field
|
|
return 'simple value','string' -- result + type
|
|
end,
|
|
description = 'Sample extractor' -- optional
|
|
})
|
|
|
|
local elts = check_selector('get_something')
|
|
assert_not_nil(elts)
|
|
assert_rspamd_table_eq({actual = elts, expect = {'simple value'}})
|
|
end)
|
|
|
|
test("custom transform", function()
|
|
lua_selectors.register_extractor(rspamd_config, "get_something", {
|
|
get_value = function(task, args) -- mandatory field
|
|
return 'simple value','string' -- result + type
|
|
end,
|
|
description = 'Sample extractor' -- optional
|
|
})
|
|
|
|
lua_selectors.register_transform(rspamd_config, "append_string", {
|
|
types = {['string'] = true}, -- accepted types
|
|
process = function(input, type, args)
|
|
return input .. table.concat(args or {}),'string' -- result + type
|
|
end,
|
|
map_type = 'string', -- can be used in map like invocation, always return 'string' type
|
|
description = 'Adds all arguments to the input string'
|
|
})
|
|
|
|
local elts = check_selector('get_something.append_string(" and a simple tail")')
|
|
assert_not_nil(elts)
|
|
assert_rspamd_table_eq({actual = elts, expect = {'simple value and a simple tail'}})
|
|
|
|
local elts = check_selector('get_something.append_string(" and", " a", " simple", " nail")')
|
|
assert_not_nil(elts)
|
|
assert_rspamd_table_eq({actual = elts, expect = {'simple value and a simple nail'}})
|
|
end)
|
|
end)
|
|
|
|
|
|
--[=========[ ******************* message ******************* ]=========]
|
|
msg = [[
|
|
From: <whoknows@nowhere.com>
|
|
To: <nobody@example.com>, <no-one@example.com>
|
|
Date: Wed, 19 Sep 2018 14:36:51 +0100 (BST)
|
|
Subject: Test subject
|
|
Content-Type: multipart/alternative;
|
|
boundary="_000_6be055295eab48a5af7ad4022f33e2d0_"
|
|
|
|
--_000_6be055295eab48a5af7ad4022f33e2d0_
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: base64
|
|
|
|
Hello world
|
|
]]
|