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:
@@ -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('.'):
|
||||
|
||||
@@ -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, '', {
|
||||
|
||||
Reference in New Issue
Block a user