64 lines
2.2 KiB
Lua
64 lines
2.2 KiB
Lua
-- SPDX-License-Identifier: GPL-3.0-or-later
|
|
local utils = require('test_utils')
|
|
|
|
-- setup resolver
|
|
modules = { 'hints > iterate' }
|
|
|
|
-- test for default configuration
|
|
local function test_default()
|
|
-- get loaded root hints and change names to lowercase
|
|
local hints_data = utils.table_keys_to_lower(hints.root())
|
|
|
|
-- root hints loaded from default location
|
|
-- check correct ip address of a.root-server.net
|
|
utils.contains(hints_data['a.root-servers.net.'], '198.41.0.4', 'has IP address for a.root-servers.net.')
|
|
end
|
|
|
|
-- test loading from config file
|
|
local function test_custom()
|
|
-- load custom root hints file with fake ip address for a.root-server.net
|
|
local err_msg = hints.root_file('hints_test.zone')
|
|
same(err_msg, '', 'load root hints from file')
|
|
|
|
-- get loaded root hints and change names to lowercase
|
|
local hints_data = utils.table_keys_to_lower(hints.root())
|
|
isnt(hints_data['a.root-servers.net.'], nil, 'can retrieve root hints')
|
|
|
|
-- check loaded ip address of a.root-server.net
|
|
utils.not_contains(hints_data['a.root-servers.net.'], '198.41.0.4',
|
|
'real IP address for a.root-servers.net. is replaced')
|
|
utils.contains(hints_data['a.root-servers.net.'], '10.0.0.1',
|
|
'real IP address for a.root-servers.net. is correct')
|
|
end
|
|
|
|
-- test that setting an address hint works (TODO: and NXDOMAIN)
|
|
local function test_nxdomain()
|
|
hints.config() -- clean start
|
|
hints.use_nodata(false)
|
|
hints.add_hosts('hints.test.hosts')
|
|
-- TODO: prefilling or some other way of getting NXDOMAIN (instead of SERVFAIL)
|
|
utils.check_answer('bad name gives NXDOMAIN',
|
|
'badname.lan', kres.type.A, kres.rcode.SERVFAIL)
|
|
utils.check_answer('another type gives NXDOMAIN',
|
|
'myname.lan', kres.type.AAAA, kres.rcode.SERVFAIL)
|
|
utils.check_answer('record itself is OK',
|
|
'myname.lan', kres.type.A, kres.rcode.NOERROR)
|
|
end
|
|
|
|
-- test that NODATA is correctly generated
|
|
local function test_nodata()
|
|
hints.config() -- clean start
|
|
hints.use_nodata(true) -- default ATM but let's not depend on that
|
|
hints['myname.lan'] = '2001:db8::1'
|
|
utils.check_answer('another type gives NODATA',
|
|
'myname.lan', kres.type.MX, utils.NODATA)
|
|
utils.check_answer('record itself is OK',
|
|
'myname.lan', kres.type.AAAA, kres.rcode.NOERROR)
|
|
end
|
|
|
|
return {
|
|
test_default,
|
|
test_custom,
|
|
test_nxdomain,
|
|
test_nodata,
|
|
}
|