aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2021-11-24 20:45:27 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2021-11-24 20:45:27 +0000
commitd71ef8ca42ff672bac112a4b89ea0259586d196c (patch)
tree8992ce2f2209aa49304ec4b1c765ca85798c7812 /test
parentd7fa89c8b0e4e51e8cd53aa62304343f20bdbd80 (diff)
downloadrspamd-d71ef8ca42ff672bac112a4b89ea0259586d196c.tar.gz
rspamd-d71ef8ca42ff672bac112a4b89ea0259586d196c.zip
[Test] Add unit test for message to ucl function
Diffstat (limited to 'test')
-rw-r--r--test/lua/unit/lua_mime.message_to_ucl.lua188
1 files changed, 188 insertions, 0 deletions
diff --git a/test/lua/unit/lua_mime.message_to_ucl.lua b/test/lua/unit/lua_mime.message_to_ucl.lua
new file mode 100644
index 000000000..c97f38724
--- /dev/null
+++ b/test/lua/unit/lua_mime.message_to_ucl.lua
@@ -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) \ No newline at end of file