|
|
|
|
|
|
|
|
local logger = require("rspamd_logger") |
|
|
local logger = require("rspamd_logger") |
|
|
local ffi = require("ffi") |
|
|
local ffi = require("ffi") |
|
|
local util = require("rspamd_util") |
|
|
local util = require("rspamd_util") |
|
|
require "fun" () |
|
|
|
|
|
|
|
|
local fun = require "fun" |
|
|
ffi.cdef[[ |
|
|
ffi.cdef[[ |
|
|
struct rspamd_email_address { |
|
|
struct rspamd_email_address { |
|
|
const char *raw; |
|
|
const char *raw; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
each(function(case) |
|
|
|
|
|
|
|
|
fun.each(function(case) |
|
|
test("Parse valid smtp addr: " .. case[1], function() |
|
|
test("Parse valid smtp addr: " .. case[1], function() |
|
|
local st = ffi.C.rspamd_email_address_from_smtp(case[1], #case[1]) |
|
|
local st = ffi.C.rspamd_email_address_from_smtp(case[1], #case[1]) |
|
|
|
|
|
|
|
|
assert_not_nil(st, "should be able to parse " .. case[1]) |
|
|
assert_not_nil(st, "should be able to parse " .. case[1]) |
|
|
|
|
|
|
|
|
each(function(k, ex) |
|
|
|
|
|
|
|
|
fun.each(function(k, ex) |
|
|
if k == 'user' then |
|
|
if k == 'user' then |
|
|
local str = ffi.string(st.user, st.user_len) |
|
|
local str = ffi.string(st.user, st.user_len) |
|
|
assert_equal(str, ex) |
|
|
assert_equal(str, ex) |
|
|
|
|
|
|
|
|
'<a@example.com><>', |
|
|
'<a@example.com><>', |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
each(function(case) |
|
|
|
|
|
|
|
|
fun.each(function(case) |
|
|
test("Parse invalid smtp addr: " .. case, function() |
|
|
test("Parse invalid smtp addr: " .. case, function() |
|
|
local st = ffi.C.rspamd_email_address_from_smtp(case, #case) |
|
|
local st = ffi.C.rspamd_email_address_from_smtp(case, #case) |
|
|
|
|
|
|