Browse Source

handle a couple zone.owns edge cases

pull/1020/head
Ross McFarland 2 years ago
parent
commit
4a7df31445
No known key found for this signature in database GPG Key ID: 943B179E15D3B22A
2 changed files with 12 additions and 2 deletions
  1. +6
    -2
      octodns/zone.py
  2. +6
    -0
      tests/test_octodns_zone.py

+ 6
- 2
octodns/zone.py View File

@ -79,8 +79,12 @@ class Zone(object):
if fqdn[-1] != '.':
fqdn = f'{fqdn}.'
# if we don't end with the zone's name we aren't owned by it
if not fqdn.endswith(self.name):
# if we exactly match the zone name we own it
if fqdn == self.name:
return True
# if we don't end with the zone's name on a boundary we aren't owned
if not fqdn.endswith(f'.{self.name}'):
return False
hostname = self.hostname_from_fqdn(fqdn)


+ 6
- 0
tests/test_octodns_zone.py View File

@ -210,6 +210,12 @@ class TestZone(TestCase):
# including subsequent delegatoin NS records
self.assertFalse(zone.owns('NS', 'below.sub.unit.tests.'))
# edge cases
# we don't own something that ends with our name, but isn't a boundary
self.assertFalse(zone.owns('A', 'foo-unit.tests.'))
# we do something that ends with the sub-zone, but isn't at a boundary
self.assertTrue(zone.owns('A', 'foo-sub.unit.tests.'))
def test_sub_zones(self):
# NS for exactly the sub is allowed
zone = Zone('unit.tests.', set(['sub', 'barred']))


Loading…
Cancel
Save