diff --git a/designate/objects/rrdata_mx.py b/designate/objects/rrdata_mx.py index caf6dedb2..2dbd2cabc 100644 --- a/designate/objects/rrdata_mx.py +++ b/designate/objects/rrdata_mx.py @@ -38,6 +38,9 @@ class MX(Record): if repr(int(priority)) != priority: raise ValueError('Value is not an integer') + if not exchange.endswith('.'): + raise ValueError('Domain %s does not end with a dot' % exchange) + self.priority = int(priority) self.exchange = exchange diff --git a/designate/tests/unit/objects/test_mx_object.py b/designate/tests/unit/objects/test_mx_object.py index 589e5be80..bd2d77abe 100644 --- a/designate/tests/unit/objects/test_mx_object.py +++ b/designate/tests/unit/objects/test_mx_object.py @@ -34,7 +34,18 @@ class MXRecordTest(oslotest.base.BaseTestCase): record_set = objects.RecordSet( name='www.example.org.', type='MX', records=objects.RecordList(objects=[ - objects.Record(data='-0 mail.example.org.', + objects.Record(data='-0 mail.example.test.', + status='ACTIVE'), + ]) + ) + + self.assertRaises(InvalidObject, record_set.validate) + + def test_validate_mx_not_fqdn(self): + record_set = objects.RecordSet( + name='www.example.org.', type='MX', + records=objects.RecordList(objects=[ + objects.Record(data='10 mail.example.test', status='ACTIVE'), ]) )