|
|
|
@ -91,7 +91,7 @@ class TemplatingTest(TestCase): |
|
|
|
) |
|
|
|
zone.add_record(noop) |
|
|
|
|
|
|
|
got = templ.process_source_zone(zone, None) |
|
|
|
got, _ = templ.process_source_and_target_zones(zone, None, None) |
|
|
|
cname = _find(got, 'cname') |
|
|
|
self.assertEqual('_cname.unit.tests.something.else.', cname.value) |
|
|
|
noop = _find(got, 'noop') |
|
|
|
@ -118,7 +118,7 @@ class TemplatingTest(TestCase): |
|
|
|
) |
|
|
|
zone.add_record(noop) |
|
|
|
|
|
|
|
got = templ.process_source_zone(zone, None) |
|
|
|
got, _ = templ.process_source_and_target_zones(zone, None, None) |
|
|
|
txt = _find(got, 'txt') |
|
|
|
self.assertEqual('There are 2 record(s) in unit.tests.', txt.values[0]) |
|
|
|
noop = _find(got, 'noop') |
|
|
|
@ -138,56 +138,12 @@ class TemplatingTest(TestCase): |
|
|
|
|
|
|
|
# this should check for the template method on our values that don't |
|
|
|
# have one |
|
|
|
templ.process_source_zone(zone, None) |
|
|
|
templ.process_source_and_target_zones(zone, None, None) |
|
|
|
# and these should make sure that the value types were asked if they |
|
|
|
# have a template method |
|
|
|
self.assertEqual({'template'}, s.value._asked_for) |
|
|
|
self.assertEqual({'template'}, m.values[0]._asked_for) |
|
|
|
|
|
|
|
@patch('octodns.record.TxtValue.template') |
|
|
|
def test_params(self, mock_template): |
|
|
|
templ = Templating('test') |
|
|
|
|
|
|
|
zone = Zone('unit.tests.', []) |
|
|
|
record_source = DummySource('record') |
|
|
|
txt = Record.new( |
|
|
|
zone, |
|
|
|
'txt', |
|
|
|
{ |
|
|
|
'type': 'TXT', |
|
|
|
'ttl': 42, |
|
|
|
'value': 'There are {zone_num_records} record(s) in {zone_name}', |
|
|
|
}, |
|
|
|
source=record_source, |
|
|
|
) |
|
|
|
zone.add_record(txt) |
|
|
|
|
|
|
|
templ.process_source_zone( |
|
|
|
zone, sources=[record_source, DummySource('other')] |
|
|
|
) |
|
|
|
mock_template.assert_called_once() |
|
|
|
self.assertEqual( |
|
|
|
call( |
|
|
|
{ |
|
|
|
'record_name': 'txt', |
|
|
|
'record_decoded_name': 'txt', |
|
|
|
'record_encoded_name': 'txt', |
|
|
|
'record_fqdn': 'txt.unit.tests.', |
|
|
|
'record_decoded_fqdn': 'txt.unit.tests.', |
|
|
|
'record_encoded_fqdn': 'txt.unit.tests.', |
|
|
|
'record_type': 'TXT', |
|
|
|
'record_ttl': 42, |
|
|
|
'record_source_id': 'record', |
|
|
|
'zone_name': 'unit.tests.', |
|
|
|
'zone_decoded_name': 'unit.tests.', |
|
|
|
'zone_encoded_name': 'unit.tests.', |
|
|
|
'zone_num_records': 1, |
|
|
|
'zone_source_ids': 'record, other', |
|
|
|
} |
|
|
|
), |
|
|
|
mock_template.call_args, |
|
|
|
) |
|
|
|
|
|
|
|
@patch('octodns.record.TxtValue.template') |
|
|
|
def test_trailing_dots(self, mock_template): |
|
|
|
templ = Templating('test', trailing_dots=False) |
|
|
|
@ -206,9 +162,7 @@ class TemplatingTest(TestCase): |
|
|
|
) |
|
|
|
zone.add_record(txt) |
|
|
|
|
|
|
|
templ.process_source_zone( |
|
|
|
zone, sources=[record_source, DummySource('other')] |
|
|
|
) |
|
|
|
templ.process_source_and_target_zones(zone, None, None) |
|
|
|
mock_template.assert_called_once() |
|
|
|
self.assertEqual( |
|
|
|
call( |
|
|
|
@ -219,14 +173,13 @@ class TemplatingTest(TestCase): |
|
|
|
'record_fqdn': 'txt.unit.tests', |
|
|
|
'record_decoded_fqdn': 'txt.unit.tests', |
|
|
|
'record_encoded_fqdn': 'txt.unit.tests', |
|
|
|
'record_source_id': 'record', |
|
|
|
'record_type': 'TXT', |
|
|
|
'record_ttl': 42, |
|
|
|
'record_source_id': 'record', |
|
|
|
'zone_name': 'unit.tests', |
|
|
|
'zone_decoded_name': 'unit.tests', |
|
|
|
'zone_encoded_name': 'unit.tests', |
|
|
|
'zone_num_records': 1, |
|
|
|
'zone_source_ids': 'record, other', |
|
|
|
} |
|
|
|
), |
|
|
|
mock_template.call_args, |
|
|
|
@ -241,7 +194,7 @@ class TemplatingTest(TestCase): |
|
|
|
# dynamic |
|
|
|
'the_date': lambda _, __: 'today', |
|
|
|
# uses a param |
|
|
|
'num_sources': lambda z, ss: len(ss), |
|
|
|
'provider': lambda _, pro: pro, |
|
|
|
}, |
|
|
|
) |
|
|
|
|
|
|
|
@ -255,18 +208,16 @@ class TemplatingTest(TestCase): |
|
|
|
'values': ( |
|
|
|
'the_answer: {the_answer}', |
|
|
|
'the_date: {the_date}', |
|
|
|
'num_sources: {num_sources}', |
|
|
|
'provider: {provider}', |
|
|
|
), |
|
|
|
}, |
|
|
|
) |
|
|
|
zone.add_record(txt) |
|
|
|
|
|
|
|
got = templ.process_source_zone( |
|
|
|
zone, tuple(DummySource(i) for i in range(3)) |
|
|
|
) |
|
|
|
got, _ = templ.process_source_and_target_zones(zone, None, 'da-pro') |
|
|
|
txt = _find(got, 'txt') |
|
|
|
self.assertEqual(3, len(txt.values)) |
|
|
|
self.assertEqual('num_sources: 3', txt.values[0]) |
|
|
|
self.assertEqual('provider: da-pro', txt.values[0]) |
|
|
|
self.assertEqual('the_answer: 42', txt.values[1]) |
|
|
|
self.assertEqual('the_date: today', txt.values[2]) |
|
|
|
|
|
|
|
@ -282,9 +233,7 @@ class TemplatingTest(TestCase): |
|
|
|
zone.add_record(txt) |
|
|
|
|
|
|
|
with self.assertRaises(TemplatingError) as ctx: |
|
|
|
templ.process_source_zone( |
|
|
|
zone, tuple(DummySource(i) for i in range(3)) |
|
|
|
) |
|
|
|
templ.process_source_and_target_zones(zone, None, None) |
|
|
|
self.assertEqual( |
|
|
|
'Invalid record "txt.unit.tests.", undefined template parameter "bad" in value', |
|
|
|
str(ctx.exception), |
|
|
|
@ -304,9 +253,7 @@ class TemplatingTest(TestCase): |
|
|
|
zone.add_record(cname) |
|
|
|
|
|
|
|
with self.assertRaises(TemplatingError) as ctx: |
|
|
|
templ.process_source_zone( |
|
|
|
zone, tuple(DummySource(i) for i in range(3)) |
|
|
|
) |
|
|
|
templ.process_source_and_target_zones(zone, None, None) |
|
|
|
self.assertEqual( |
|
|
|
'Invalid record "cname.unit.tests.", undefined template parameter "bad" in value', |
|
|
|
str(ctx.exception), |
|
|
|
|