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