Browse Source

Fix handling of null MX records and add test for behavior

pull/880/head
Ross McFarland 4 years ago
parent
commit
2564e4aebe
No known key found for this signature in database GPG Key ID: 943B179E15D3B22A
2 changed files with 14 additions and 2 deletions
  1. +3
    -2
      octodns/record/__init__.py
  2. +11
    -0
      tests/test_octodns_record.py

+ 3
- 2
octodns/record/__init__.py 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('.'):


+ 11
- 0
tests/test_octodns_record.py 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, '', {


Loading…
Cancel
Save