1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00
Files
github-octodns/tests/test_octodns_processor_acme.py
2022-07-04 12:27:39 -07:00

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]),
)