Skip to content

Commit

Permalink
Adjust unit tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
felixfontein committed Nov 8, 2022
1 parent f8ee7d0 commit 263c47c
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 4 deletions.
101 changes: 99 additions & 2 deletions tests/unit/plugins/module_utils/test_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,37 +110,65 @@ def test_lookup_ns_names():


def test_resolver():
fake_query = MagicMock()
fake_query.question = 'Doctor Who?'
resolver = mock_resolver(['1.1.1.1'], {
('1.1.1.1', ): [
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '3.3.3.3'),
)),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.AAAA, '1:2::3'),
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.AAAA, '2:3::4'),
)),
},
{
'target': 'ns.example.org',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.org',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '4.4.4.4'),
)),
},
{
'target': 'ns.example.org',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '2.2.2.2'),
)),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
],
('3.3.3.3', ): [
('1:2::3', '2:3::4', '3.3.3.3'): [
{
'target': dns.name.from_unicode(u'example.org'),
'lifetime': 10,
Expand Down Expand Up @@ -239,7 +267,7 @@ def test_resolver():
with patch('dns.resolver.Resolver', resolver):
with patch('dns.query.udp', mock_query_udp(udp_sequence)):
resolver = ResolveDirectlyFromNameServers()
assert resolver.resolve_nameservers('example.com', resolve_addresses=True) == ['3.3.3.3']
assert resolver.resolve_nameservers('example.com', resolve_addresses=True) == ['1:2::3', '2:3::4', '3.3.3.3']
# www.example.com is a CNAME for example.org
rrset_dict = resolver.resolve('www.example.com')
assert sorted(rrset_dict.keys()) == ['ns.example.com', 'ns.example.org']
Expand All @@ -261,41 +289,66 @@ def test_resolver():


def test_timeout_handling():
fake_query = MagicMock()
fake_query.question = 'Doctor Who?'
resolver = mock_resolver(['1.1.1.1'], {
('1.1.1.1', ): [
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'raise': dns.exception.Timeout(timeout=10),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '3.3.3.3'),
)),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.exception.Timeout(timeout=10),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'raise': dns.exception.Timeout(timeout=10),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'raise': dns.exception.Timeout(timeout=10),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '2.2.2.2'),
)),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
],
})
udp_sequence = [
Expand Down Expand Up @@ -447,6 +500,7 @@ def test_no_response():
('1.1.1.1', ): [
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
Expand All @@ -455,15 +509,28 @@ def test_no_response():
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '5.5.5.5'),
)),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns2.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '4.4.4.4'),
)),
},
{
'target': 'ns2.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
],
('3.3.3.3', '5.5.5.5'): [
{
Expand Down Expand Up @@ -648,44 +715,74 @@ def test_cname_loop():


def test_resolver_non_default():
fake_query = MagicMock()
fake_query.question = 'Doctor Who?'
resolver = mock_resolver(['1.1.1.1'], {
('1.1.1.1', ): [
{
'target': 'ns.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '2.2.2.2'),
)),
},
{
'target': 'ns.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '3.3.3.3'),
)),
},
{
'target': 'ns.example.com',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns.org',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.com',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '2.2.3.3'),
)),
},
{
'target': 'ns.org',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
{
'target': 'ns.example.org',
'rdtype': dns.rdatatype.A,
'lifetime': 10,
'result': create_mock_answer(dns.rrset.from_rdata(
'ns.example.org',
300,
dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, '4.4.4.4'),
)),
},
{
'target': 'ns.example.org',
'rdtype': dns.rdatatype.AAAA,
'lifetime': 10,
'raise': dns.resolver.NoAnswer(response=fake_query),
},
],
('3.3.3.3', ): [
{
Expand Down
Loading

0 comments on commit 263c47c

Please sign in to comment.