1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Fix handling of null MX records and add test for behavior

This commit is contained in:
Ross McFarland
2022-02-15 07:53:39 -08:00
parent c73bdf6ce3
commit 2564e4aebe
2 changed files with 14 additions and 2 deletions

View File

@@ -1090,8 +1090,9 @@ class MxValue(EqualityTupleMixin):
reasons.append(f'invalid preference "{value["preference"]}"')
exchange = None
try:
exchange = value.get('exchange', None) or value['value']
if not FQDN(str(exchange), allow_underscores=True).is_valid:
exchange = str(value.get('exchange', None) or value['value'])
if exchange != '.' and \
not FQDN(exchange, allow_underscores=True).is_valid:
reasons.append(f'Invalid MX exchange "{exchange}" is not '
'a valid FQDN.')
elif not exchange.endswith('.'):

View File

@@ -2717,6 +2717,17 @@ class TestRecordValidation(TestCase):
self.assertEqual(['Invalid MX exchange "100 foo.bar.com." is not a '
'valid FQDN.'], ctx.exception.reasons)
# exchange can be a single `.`
record = Record.new(self.zone, '', {
'type': 'MX',
'ttl': 600,
'value': {
'preference': 0,
'exchange': '.'
}
})
self.assertEqual('.', record.values[0].exchange)
def test_NXPTR(self):
# doesn't blow up
Record.new(self.zone, '', {