mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
106 lines
3.2 KiB
Python
106 lines
3.2 KiB
Python
#
|
|
#
|
|
#
|
|
|
|
from __future__ import (
|
|
absolute_import,
|
|
division,
|
|
print_function,
|
|
unicode_literals,
|
|
)
|
|
|
|
from unittest import TestCase
|
|
|
|
from octodns.processor.acme import AcmeMangingProcessor
|
|
from octodns.record import Record
|
|
from octodns.zone import Zone
|
|
|
|
zone = Zone('unit.tests.', [])
|
|
records = {
|
|
'root-unowned': Record.new(
|
|
zone,
|
|
'_acme-challenge',
|
|
{'ttl': 30, 'type': 'TXT', 'value': 'magic bit'},
|
|
),
|
|
'sub-unowned': Record.new(
|
|
zone,
|
|
'_acme-challenge.sub-unowned',
|
|
{'ttl': 30, 'type': 'TXT', 'value': 'magic bit'},
|
|
),
|
|
'not-txt': Record.new(
|
|
zone,
|
|
'_acme-challenge.not-txt',
|
|
{'ttl': 30, 'type': 'AAAA', 'value': '::1'},
|
|
),
|
|
'not-acme': Record.new(
|
|
zone, 'not-acme', {'ttl': 30, 'type': 'TXT', 'value': 'Hello World!'}
|
|
),
|
|
'managed': Record.new(
|
|
zone,
|
|
'_acme-challenge.managed',
|
|
{'ttl': 30, 'type': 'TXT', 'value': 'magic bit'},
|
|
),
|
|
'owned': Record.new(
|
|
zone,
|
|
'_acme-challenge.owned',
|
|
{'ttl': 30, 'type': 'TXT', 'values': ['*octoDNS*', 'magic bit']},
|
|
),
|
|
'going-away': Record.new(
|
|
zone,
|
|
'_acme-challenge.going-away',
|
|
{'ttl': 30, 'type': 'TXT', 'values': ['*octoDNS*', 'magic bit']},
|
|
),
|
|
}
|
|
|
|
|
|
class TestAcmeMangingProcessor(TestCase):
|
|
def test_process_zones(self):
|
|
acme = AcmeMangingProcessor('acme')
|
|
|
|
source = Zone(zone.name, [])
|
|
# Unrelated stuff that should be untouched
|
|
source.add_record(records['not-txt'])
|
|
source.add_record(records['not-acme'])
|
|
# A managed acme that will have ownership value added
|
|
source.add_record(records['managed'])
|
|
|
|
got = acme.process_source_zone(source)
|
|
self.assertEqual(
|
|
['_acme-challenge.managed', '_acme-challenge.not-txt', 'not-acme'],
|
|
sorted([r.name for r in got.records]),
|
|
)
|
|
managed = None
|
|
for record in got.records:
|
|
if record.name.endswith('managed'):
|
|
managed = record
|
|
break
|
|
self.assertTrue(managed)
|
|
# Ownership was marked with an extra value
|
|
self.assertEqual(['*octoDNS*', 'magic bit'], record.values)
|
|
|
|
existing = Zone(zone.name, [])
|
|
# Unrelated stuff that should be untouched
|
|
existing.add_record(records['not-txt'])
|
|
existing.add_record(records['not-acme'])
|
|
# Stuff that will be ignored
|
|
existing.add_record(records['root-unowned'])
|
|
existing.add_record(records['sub-unowned'])
|
|
# A managed acme that needs ownership value added
|
|
existing.add_record(records['managed'])
|
|
# A managed acme that has ownershp managed
|
|
existing.add_record(records['owned'])
|
|
# A managed acme that needs to go away
|
|
existing.add_record(records['going-away'])
|
|
|
|
got = acme.process_target_zone(existing)
|
|
self.assertEqual(
|
|
[
|
|
'_acme-challenge.going-away',
|
|
'_acme-challenge.managed',
|
|
'_acme-challenge.not-txt',
|
|
'_acme-challenge.owned',
|
|
'not-acme',
|
|
],
|
|
sorted([r.name for r in got.records]),
|
|
)
|