summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-09-12 12:00:34 +0100
committerGitHub <noreply@github.com>2018-09-12 12:00:34 +0100
commit88689d7be5cb1e5e8643ad4130c60ba2277ddd1b (patch)
tree60e548e8dd1ac5c646e38013cfc53c9bd08ef50c
parentf77c6af1d0228256972140e0d3281abbe689fea7 (diff)
parent9ea7effc33d297790cc8273db69c996454201fda (diff)
downloadrspamd-88689d7be5cb1e5e8643ad4130c60ba2277ddd1b.tar.gz
rspamd-88689d7be5cb1e5e8643ad4130c60ba2277ddd1b.zip
Merge pull request #2485 from negram/dns-api-test
[Test] Added test for DNS api
-rw-r--r--test/functional/cases/250_dns.robot36
-rw-r--r--test/functional/configs/lua_test.conf4
-rw-r--r--test/functional/lua/dns.lua52
3 files changed, 92 insertions, 0 deletions
diff --git a/test/functional/cases/250_dns.robot b/test/functional/cases/250_dns.robot
new file mode 100644
index 000000000..c19f473e9
--- /dev/null
+++ b/test/functional/cases/250_dns.robot
@@ -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
diff --git a/test/functional/configs/lua_test.conf b/test/functional/configs/lua_test.conf
index af84a1578..949fd00f2 100644
--- a/test/functional/configs/lua_test.conf
+++ b/test/functional/configs/lua_test.conf
@@ -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
index 000000000..62b7d21e6
--- /dev/null
+++ b/test/functional/lua/dns.lua
@@ -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