Merge "Improved dnsutils coverage"

This commit is contained in:
Zuul 2023-12-07 18:22:26 +00:00 committed by Gerrit Code Review
commit 9d253ad6ed
4 changed files with 53 additions and 8 deletions

View File

@ -89,15 +89,9 @@ def from_dnspython_zone(dnspython_zone):
def dnspyrecords_to_recordsetlist(dnspython_records):
rrsets = objects.RecordSetList()
for rname in dnspython_records.keys():
for rdataset in dnspython_records[rname]:
rrset = dnspythonrecord_to_recordset(rname, rdataset)
if rrset is None:
continue
rrsets.append(rrset)
rrsets.append(dnspythonrecord_to_recordset(rname, rdataset))
return rrsets
@ -112,6 +106,7 @@ def dnspythonrecord_to_recordset(rname, rdataset):
'name': name,
'type': record_type
}
if rdataset.ttl != 0:
values['ttl'] = rdataset.ttl

View File

@ -0,0 +1,21 @@
$ORIGIN example.com.
example.com. 0 IN SOA ns1.example.com. nsadmin.example.com. (
2013091101 ; serial
7200 ; refresh
3600 ; retry
2419200 ; expire
10800 ; minimum
)
ipv4.example.com. 300 IN A 192.0.0.1
ipv6.example.com. 10800 IN AAAA fd00::1
cname.example.com. 10800 IN CNAME example.com.
example.com. 10800 IN MX 5 192.0.0.2
example.com. 10800 IN MX 10 192.0.0.3
_http._tcp.example.com. 10800 IN SRV 10 0 80 192.0.0.4
_http._tcp.example.com. 10800 IN SRV 10 5 80 192.0.0.5
example.com. 10800 IN TXT "abc" "def"
example.com. 10800 IN SPF "v=spf1 mx a"
example.com. 10800 IN NS ns1.example.com.
example.com. 10800 IN NS ns2.example.com.
delegation.example.com. 10800 IN NS ns1.example.com.
1.0.0.192.in-addr.arpa. 10800 IN PTR ipv4.example.com.

View File

@ -130,9 +130,24 @@ class TestUtils(designate.tests.TestCase):
self.assertIsInstance(zone, objects.zone.Zone)
def test_from_dnspython_zone_zero_soa(self):
CONF.set_override('min_ttl', 1234, 'service:central')
zone_file = self.get_zonefile_fixture(variant='zerosoa')
dnspython_zone = dns.zone.from_text(
zone_file,
relativize=False,
check_origin=False
)
zone = dnsutils.from_dnspython_zone(dnspython_zone)
self.assertIsInstance(zone, objects.zone.Zone)
self.assertEqual(1234, zone.ttl)
def test_from_dnspython_zone_no_soa(self):
zone_file = self.get_zonefile_fixture(variant='nosoa')
dnspython_zone = dns.zone.from_text(
zone_file,
relativize=False,

View File

@ -19,6 +19,7 @@ from unittest import mock
import dns
import dns.exception
import dns.message
import dns.name
import dns.rcode
import dns.rdatatype
import dns.zone
@ -39,6 +40,19 @@ class TestDNSUtils(oslotest.base.BaseTestCase):
super().setUp()
self.useFixture(cfg_fixture.Config(CONF))
def test_dnspyrecords_to_recordsetlist(self):
node = dns.node.Node()
node.rdatasets.append(
dns.rdataset.from_text('in', 'a', 0, '192.0.2.1')
)
dnspython_records = {
dns.name.Name(labels=[b'ipv4', b'example', b'org', b'']): node
}
recorset = dnsutils.dnspyrecords_to_recordsetlist(dnspython_records)
self.assertEqual(1, len(recorset))
self.assertEqual('ipv4.example.org.', recorset[0].name)
self.assertIsNone(recorset[0].ttl)
@mock.patch('socket.getaddrinfo')
def test_get_ip_address(self, mock_getaddrinfo):
mock_getaddrinfo.return_value = [