Pārlūkot izejas kodu

Merge pull request #2485 from negram/dns-api-test

[Test] Added test for DNS api
tags/1.8.0
Vsevolod Stakhov pirms 5 gadiem
vecāks
revīzija
88689d7be5
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam

+ 36
- 0
test/functional/cases/250_dns.robot Parādīt failu

@@ -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

+ 4
- 0
test/functional/configs/lua_test.conf Parādīt failu

@@ -14,6 +14,10 @@ options = {
name = "site.resolveme",
type = "a";
replies = ["127.0.0.1"];
}, {
name = "not-resolvable.com",
type = "a";
rcode = 'norec';
}]
}
}

+ 52
- 0
test/functional/lua/dns.lua Parādīt failu

@@ -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,
})

Notiek ielāde…
Atcelt
Saglabāt