2 changed files with 194 additions and 3 deletions
@ -0,0 +1,188 @@ |
|||
|
|||
--[=========[ ******************* message ******************* ]=========] |
|||
local msg = [[ |
|||
Received: from mail0.mindspring.com (unknown [1.1.1.1]) |
|||
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) |
|||
(No client certificate requested) |
|||
by mail.example.com (Postfix) with ESMTPS id 88A0C6B332 |
|||
for <example@example.com>; Wed, 24 Nov 2021 19:05:43 +0000 (GMT) |
|||
From: <> |
|||
To: <nobody@example.com> |
|||
Subject: test |
|||
Content-Type: multipart/alternative; |
|||
boundary="_000_6be055295eab48a5af7ad4022f33e2d0_" |
|||
|
|||
--_000_6be055295eab48a5af7ad4022f33e2d0_ |
|||
Content-Type: text/plain; charset="utf-8" |
|||
Content-Transfer-Encoding: 7bit |
|||
|
|||
Hello world |
|||
|
|||
|
|||
--_000_6be055295eab48a5af7ad4022f33e2d0_ |
|||
Content-Type: text/html; charset="utf-8" |
|||
|
|||
<html><body> |
|||
lol |
|||
</html> |
|||
]] |
|||
|
|||
context("Task piecewise split", function() |
|||
local rspamd_task = require "rspamd_task" |
|||
local rspamd_util = require "rspamd_util" |
|||
local rspamd_test_helper = require "rspamd_test_helper" |
|||
local lua_mime = require "lua_mime" |
|||
local ucl = require "ucl" |
|||
|
|||
rspamd_test_helper.init_url_parser() |
|||
local cfg = rspamd_util.config_from_ucl(rspamd_test_helper.default_config(), |
|||
"INIT_URL,INIT_LIBS,INIT_SYMCACHE,INIT_VALIDATE,INIT_PRELOAD_MAPS") |
|||
|
|||
test("Simple message split", function() |
|||
local res,task = rspamd_task.load_from_string(msg, cfg) |
|||
|
|||
if not res or not task then |
|||
assert_true(false, "failed to load message") |
|||
end |
|||
|
|||
task:process_message() |
|||
|
|||
local expected_json = [[ |
|||
{ |
|||
"parts": [ |
|||
{ |
|||
"content": "Hello world\n\n\n", |
|||
"size": 14, |
|||
"type": "text/plain", |
|||
"boundary": "_000_6be055295eab48a5af7ad4022f33e2d0_", |
|||
"detected_type": "text/plain", |
|||
"headers": [ |
|||
[ |
|||
{ |
|||
"order": 0, |
|||
"raw": "Content-Type: text/plain; charset=\"utf-8\"\n", |
|||
"empty_separator": false, |
|||
"value": "text/plain; charset=\"utf-8\"", |
|||
"separator": " ", |
|||
"decoded": "text/plain; charset=\"utf-8\"", |
|||
"name": "Content-Type", |
|||
"tab_separated": false |
|||
} |
|||
], |
|||
[ |
|||
{ |
|||
"order": 1, |
|||
"raw": "Content-Transfer-Encoding: 7bit\n", |
|||
"empty_separator": false, |
|||
"value": "7bit", |
|||
"separator": " ", |
|||
"decoded": "7bit", |
|||
"name": "Content-Transfer-Encoding", |
|||
"tab_separated": false |
|||
} |
|||
] |
|||
] |
|||
}, |
|||
{ |
|||
"content": "<html><body>\nlol\n</html>\n", |
|||
"size": 25, |
|||
"type": "text/html", |
|||
"boundary": "_000_6be055295eab48a5af7ad4022f33e2d0_", |
|||
"detected_type": "text/html", |
|||
"headers": [ |
|||
[ |
|||
{ |
|||
"order": 0, |
|||
"raw": "Content-Type: text/html; charset=\"utf-8\"\n", |
|||
"empty_separator": false, |
|||
"value": "text/html; charset=\"utf-8\"", |
|||
"separator": " ", |
|||
"decoded": "text/html; charset=\"utf-8\"", |
|||
"name": "Content-Type", |
|||
"tab_separated": false |
|||
} |
|||
] |
|||
] |
|||
} |
|||
], |
|||
"newlines": "lf", |
|||
"digest": "043cf1a314d0a1af95951d6aec932faf", |
|||
"envelope": [], |
|||
"size": 666, |
|||
"headers": [ |
|||
[ |
|||
{ |
|||
"order": 0, |
|||
"raw": "Received: from mail0.mindspring.com (unknown [1.1.1.1])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby mail.example.com (Postfix) with ESMTPS id 88A0C6B332\n\tfor <example@example.com>; Wed, 24 Nov 2021 19:05:43 +0000 (GMT)\n", |
|||
"empty_separator": false, |
|||
"value": "from mail0.mindspring.com (unknown [1.1.1.1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.com (Postfix) with ESMTPS id 88A0C6B332 for <example@example.com>; Wed, 24 Nov 2021 19:05:43 +0000 (GMT)", |
|||
"separator": " ", |
|||
"decoded": "from mail0.mindspring.com (unknown [1.1.1.1]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.example.com (Postfix) with ESMTPS id 88A0C6B332 for <example@example.com>; Wed, 24 Nov 2021 19:05:43 +0000 (GMT)", |
|||
"name": "Received", |
|||
"tab_separated": false |
|||
} |
|||
], |
|||
[ |
|||
{ |
|||
"order": 1, |
|||
"raw": "From: <>\n", |
|||
"empty_separator": false, |
|||
"value": "<>", |
|||
"separator": " ", |
|||
"decoded": "<>", |
|||
"name": "From", |
|||
"tab_separated": false |
|||
} |
|||
], |
|||
[ |
|||
{ |
|||
"order": 2, |
|||
"raw": "To: <nobody@example.com>\n", |
|||
"empty_separator": false, |
|||
"value": "<nobody@example.com>", |
|||
"separator": " ", |
|||
"decoded": "<nobody@example.com>", |
|||
"name": "To", |
|||
"tab_separated": false |
|||
} |
|||
], |
|||
[ |
|||
{ |
|||
"order": 3, |
|||
"raw": "Subject: test\n", |
|||
"empty_separator": false, |
|||
"value": "test", |
|||
"separator": " ", |
|||
"decoded": "test", |
|||
"name": "Subject", |
|||
"tab_separated": false |
|||
} |
|||
], |
|||
[ |
|||
{ |
|||
"order": 4, |
|||
"raw": "Content-Type: multipart/alternative;\n boundary=\"_000_6be055295eab48a5af7ad4022f33e2d0_\"\n", |
|||
"empty_separator": false, |
|||
"value": "multipart/alternative; boundary=\"_000_6be055295eab48a5af7ad4022f33e2d0_\"", |
|||
"separator": " ", |
|||
"decoded": "multipart/alternative; boundary=\"_000_6be055295eab48a5af7ad4022f33e2d0_\"", |
|||
"name": "Content-Type", |
|||
"tab_separated": false |
|||
} |
|||
] |
|||
] |
|||
} |
|||
]] |
|||
local parser = ucl.parser() |
|||
local res = parser:parse_string(expected_json) |
|||
assert_true(res) |
|||
local expected = parser:get_object() |
|||
local ucl_object = lua_mime.message_to_ucl(task, true) |
|||
assert_rspamd_table_eq({ |
|||
actual = ucl_object, |
|||
expect = expected |
|||
}) |
|||
task:destroy() |
|||
end) |
|||
|
|||
end) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue