]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add smtp date parser unit tests
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 9 Nov 2020 16:21:08 +0000 (16:21 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 9 Nov 2020 16:21:27 +0000 (16:21 +0000)
test/lua/unit/smtp_date.lua [new file with mode: 0644]

diff --git a/test/lua/unit/smtp_date.lua b/test/lua/unit/smtp_date.lua
new file mode 100644 (file)
index 0000000..28f2849
--- /dev/null
@@ -0,0 +1,46 @@
+context("SMTP date functions", function()
+  local rspamd_util = require "rspamd_util"
+
+  local cases = {
+    {'Mon, 05 Oct 2020 19:05:57 -0000', 1601924757},
+    -- space instead of leading zero
+    {'Mon,  5 Oct 2020 19:05:57 -0000', 1601924757},
+    -- no padding
+    {'Mon, 5 Oct 2020 19:05:57 -0000',  1601924757},
+    -- no weekday
+    {'5 Oct 2020 19:05:57 -0000', 1601924757},
+    -- different TZ offsets
+    {'Tue, 22 Sep 2020 00:03:14 -0800', 1600761794},
+    {'Fri, 02 Oct 2020 20:00:40 +0100', 1601665240},
+    {'Mon, 5 Oct 2020 15:48:32 +0530', 1601893112},
+    {'Mon, 05 Oct 2020 10:30:36 +1200', 1601850636},
+    -- extra comment
+    {'Thu, 18 May 2006 16:08:11 +0400 (MSD)', 1147954091},
+    {'Thu, 18 May 2006 16:08:11 +0400',       1147954091},
+    -- obs_zone
+    {'Sat, 26 Sep 2020 17:36:21 GMT',   1601141781},
+    {'Sat, 26 Sep 2020 17:36:21 +0000', 1601141781},
+    {'Wed, 30 Sep 2020 17:32:31 PDT',   1601512351},
+    {'Wed, 30 Sep 2020 17:32:31 -0700', 1601512351},
+    -- 2 digit year < 50
+    {'Mon, 05 Oct 20 06:35:38 GMT',   1601879738},
+    {'Mon, 05 Oct 2020 06:35:38 GMT', 1601879738},
+    -- 2 digit year >= 50
+    {'26 Aug 76 14:30 EDT',   209932200},
+    {'26 Aug 1976 14:30 EDT', 209932200},
+    -- double space before TZ
+    {'Sat, 29 Aug 2020 08:25:15  +0700', 1598664315},
+    -- XXX timestamp corresponding to Sat Dec 30 00:00:00 GMT 1899 returned on error
+    --{'Sat, Dec 30 1899 00:00:00 GMT', -2209161600},
+  }
+
+  for _,case in ipairs(cases) do
+    test("Parse date: " .. case[1], function()
+      local timestamp = rspamd_util.parse_smtp_date(case[1])
+      assert_rspamd_eq({
+        expect = case[2],
+        actual = timestamp
+      })
+    end)
+  end
+end)
\ No newline at end of file