зеркало из
https://github.com/rspamd/rspamd.git
synced 2024-07-29 08:17:22 +02:00
![Mikhail Galanin](/assets/img/avatar_default.png)
Also added negative cases (i.e. it doesn't work when it shouldn't) and combinations of selectors
114 строки
3.4 KiB
Lua
114 строки
3.4 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 ffi = require "ffi"
|
|
local cfg = rspamd_config
|
|
|
|
local task
|
|
|
|
ffi.cdef[[
|
|
void rspamd_url_init (const char *tld_file);
|
|
]]
|
|
|
|
local test_dir = string.gsub(debug.getinfo(1).source, "^@(.+/)[^/]+$", "%1")
|
|
|
|
ffi.C.rspamd_url_init(string.format('%s/%s', test_dir, "test_tld.dat"))
|
|
|
|
before(function()
|
|
local res
|
|
res,task = rspamd_task.load_from_string(msg, cfg)
|
|
task:set_from_ip("198.172.22.91")
|
|
task:set_user("cool user name")
|
|
task:set_helo("hello mail")
|
|
task:set_request_header("hdr1", "value1")
|
|
task:process_message()
|
|
task:get_mempool():set_variable("int_var", 1)
|
|
task:get_mempool():set_variable("str_var", "str 1")
|
|
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
|
|
|
|
-- Selectors which should not be parse
|
|
local cases = {
|
|
["random string"] = {
|
|
selector = "'xxx'"},
|
|
|
|
["random nonsense"] = {
|
|
selector = "13 / sd 42 x"},
|
|
|
|
["unknown selector"] = {
|
|
selector = "unknownselector"},
|
|
|
|
["unknown transformation"] = {
|
|
selector = "urls.somethingnew"},
|
|
}
|
|
|
|
for case_name, case in pairs(cases) do
|
|
test("case " .. case_name, function()
|
|
local sels = lua_selectors.parse_selector(cfg, case.selector)
|
|
print(logger.slog("%1", sels))
|
|
assert_nil(sels)
|
|
end)
|
|
end
|
|
end)
|
|
|
|
|
|
--[=========[ ******************* message ******************* ]=========]
|
|
msg = [[
|
|
Received: from ca-18-193-131.service.infuturo.it ([151.18.193.131] helo=User)
|
|
by server.chat-met-vreemden.nl with esmtpa (Exim 4.76)
|
|
(envelope-from <upwest201diana@outlook.com>)
|
|
id 1ZC1sl-0006b4-TU; Mon, 06 Jul 2015 10:36:08 +0200
|
|
From: <whoknows@nowhere.com>
|
|
To: <nobody@example.com>, <no-one@example.com>
|
|
Date: Wed, 19 Sep 2018 14:36:51 +0100 (BST)
|
|
subject: Second, lower-cased header subject
|
|
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
|
|
|
|
|
|
--_000_6be055295eab48a5af7ad4022f33e2d0_
|
|
Content-Type: text/html; charset="utf-8"
|
|
|
|
<html><body>
|
|
<a href="http://example.net">http://example.net</a>
|
|
<a href="mailto:test@example.net">mail me</a>
|
|
</html>
|
|
|
|
|
|
--_000_6be055295eab48a5af7ad4022f33e2d0_
|
|
Content-Type: application/zip; name=f.zip
|
|
Content-Disposition: attachment; size=166; filename=f.zip
|
|
Content-Transfer-Encoding: base64
|
|
|
|
UEsDBAoAAAAAAINe6kgAAAAAAAAAAAAAAAAIABwAZmFrZS5leGVVVAkAA8YaglfGGoJXdXgLAAEE
|
|
6AMAAAToAwAAUEsBAh4DCgAAAAAAg17qSAAAAAAAAAAAAAAAAAgAGAAAAAAAAAAAALSBAAAAAGZh
|
|
a2UuZXhlVVQFAAPGGoJXdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAAEIAAAAAAA==
|
|
|
|
|
|
--_000_6be055295eab48a5af7ad4022f33e2d0_
|
|
Content-Type: application/zip; name=f.zip
|
|
Content-Disposition: attachment; size=166; filename=f2.zip
|
|
Content-Transfer-Encoding: base64
|
|
|
|
UEsDBAoAAAAAAINe6kgAAAAAAAAAAAAAAAAIABwAZmFrZS5leGVVVAkAA8YaglfGGoJXdXgLAAEE
|
|
6AMAAAToAwAAUEsBAh4DCgAAAAAAg17qSAAAAAAAAAAAAAAAAAgAGAAAAAAAAAAAALSBAAAAAGZh
|
|
a2UuZXhlVVQFAAPGGoJXdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAAEIAAAAAAA==
|
|
]]
|