123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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
- ]]
|