]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Added test for DNS api
authorMikhail Galanin <mgalanin@mimecast.com>
Wed, 12 Sep 2018 08:01:31 +0000 (09:01 +0100)
committerMikhail Galanin <mgalanin@mimecast.com>
Wed, 12 Sep 2018 08:01:31 +0000 (09:01 +0100)
test/functional/cases/250_dns.robot [new file with mode: 0644]
test/functional/configs/lua_test.conf
test/functional/lua/dns.lua [new file with mode: 0644]

diff --git a/test/functional/cases/250_dns.robot b/test/functional/cases/250_dns.robot
new file mode 100644 (file)
index 0000000..c19f473
--- /dev/null
@@ -0,0 +1,36 @@
+*** Settings ***
+Test Setup      Http Setup
+Test Teardown   Http Teardown
+Library         Process
+Library         ${TESTDIR}/lib/rspamd.py
+Resource        ${TESTDIR}/lib/rspamd.robot
+Variables       ${TESTDIR}/lib/vars.py
+
+*** Variables ***
+${URL_TLD}      ${TESTDIR}/../lua/unit/test_tld.dat
+${CONFIG}       ${TESTDIR}/configs/lua_test.conf
+${MESSAGE}      ${TESTDIR}/messages/spam_message.eml
+${RSPAMD_SCOPE}  Test
+
+*** Test Cases ***
+Simple DNS request
+  ${result} =  Scan Message With Rspamc  --header=to-resolve:example.com  ${MESSAGE}
+  Check Rspamc  ${result}  DNS_SYNC (0.00)[93.184.216.34]
+  Check Rspamc  ${result}  DNS (0.00)[93.184.216.34]
+
+Faulty DNS request
+  ${result} =  Scan Message With Rspamc  --header=to-resolve:not-resolvable.com  ${MESSAGE}
+  Check Rspamc  ${result}  DNS_SYNC_ERROR (0.00)[requested record is not found]
+  Check Rspamc  ${result}  DNS_ERROR (0.00)[requested record is not found]
+
+*** Keywords ***
+Lua Setup
+  [Arguments]  ${LUA_SCRIPT}
+  Set Global Variable  ${LUA_SCRIPT}
+  Generic Setup
+
+Http Setup
+  Lua Setup  ${TESTDIR}/lua/dns.lua
+
+Http Teardown
+  Normal Teardown
index af84a15786fbb057d66510969ea83aa2c2b2ac0c..949fd00f2002953e63a2b3f43963c8aea55b2424 100644 (file)
@@ -14,6 +14,10 @@ options = {
                        name = "site.resolveme",
                        type = "a";
                        replies = ["127.0.0.1"];
+               }, {
+                       name = "not-resolvable.com",
+                       type = "a";
+                       rcode = 'norec';
                }]
        }
 }
diff --git a/test/functional/lua/dns.lua b/test/functional/lua/dns.lua
new file mode 100644 (file)
index 0000000..dca9d5b
--- /dev/null
@@ -0,0 +1,52 @@
+local rspamd_dns = require "rspamd_dns"
+local logger = require "rspamd_logger"
+
+local function dns_sync_symbol(task)
+  local to_resolve = tostring(task:get_request_header('to-resolve'))
+  local is_ok, results = rspamd_dns.request({
+    task = task,
+    type = 'a',
+    name = to_resolve ,
+  })
+
+  logger.errx(task, "is_ok=%1, results=%2, results[1]=%3", is_ok, results, results[1])
+
+  if not is_ok then
+    task:insert_result('DNS_SYNC_ERROR', 1.0, results)
+  else
+    task:insert_result('DNS_SYNC', 1.0, tostring(results[1]))
+  end
+end
+
+rspamd_config:register_symbol({
+  name = 'SIMPLE_DNS_SYNC',
+  score = 1.0,
+  callback = dns_sync_symbol,
+  no_squeeze = true
+})
+
+
+-- Async request
+local function dns_symbol(task)
+  local function dns_cb(_, to_resolve, results, err)
+    logger.errx(task, "_=%1, to_resolve=%2, results=%3, err%4", _, to_resolve, results, err)
+    if err then
+      task:insert_result('DNS_ERROR', 1.0, err)
+    else
+      task:insert_result('DNS', 1.0, tostring(results[1]))
+    end
+  end
+  local to_resolve = tostring(task:get_request_header('to-resolve'))
+  
+  task:get_resolver():resolve_a({
+    task = task,
+    name = to_resolve,
+    callback = dns_cb
+  })
+end
+
+rspamd_config:register_symbol({
+  name = 'SIMPLE_DNS',
+  score = 1.0,
+  callback = dns_symbol,
+})
\ No newline at end of file