# # # from unittest import TestCase from octodns.record import Record, ValidationError from octodns.record.alias import AliasRecord from octodns.record.target import _TargetValue from octodns.zone import Zone class TestRecordTarget(TestCase): def test_target_rdata_text(self): # anything goes, we're a noop for s in ( None, '', 'word', 42, 42.43, '1.2.3', 'some.words.that.here', '1.2.word.4', '1.2.3.4', ): self.assertEqual(s, _TargetValue.parse_rdata_text(s)) zone = Zone('unit.tests.', []) a = AliasRecord(zone, 'a', {'ttl': 42, 'value': 'some.target.'}) self.assertEqual('some.target.', a.value.rdata_text) def test_relative_target(self): zone = Zone('unit.tests.', []) data = {'ttl': 43, 'type': 'CNAME', 'value': 'isrelative'} with self.assertRaises(ValidationError) as ctx: Record.new(zone, 'cname', data) self.assertEqual( ['CNAME value "isrelative" is relative'], ctx.exception.reasons ) cname = Record.new(zone, 'cname', data, lenient=True) self.assertEqual(data['value'], cname.value) data = { 'ttl': 43, 'type': 'NS', 'values': ['isrelative1', 'isrelative2'], } with self.assertRaises(ValidationError) as ctx: Record.new(zone, 'ns', data) self.assertEqual( [ 'NS value "isrelative1" is relative', 'NS value "isrelative2" is relative', ], ctx.exception.reasons, ) cname = Record.new(zone, 'ns', data, lenient=True) self.assertEqual(data['values'], cname.values)