Add ASCII validation to ChunkedValue, TXT/SPF

This commit is contained in:
Ross McFarland
2024-01-03 08:42:17 -08:00
parent 604ed8604b
commit 119de9b421
3 changed files with 35 additions and 0 deletions
+30
View File
@@ -37,3 +37,33 @@ class TestRecordChunked(TestCase):
zone = Zone('unit.tests.', [])
a = SpfRecord(zone, 'a', {'ttl': 42, 'value': 'some.target.'})
self.assertEqual('some.target.', a.values[0].rdata_text)
class TestChunkedValue(TestCase):
def test_validate(self):
# valid stuff
for data in ('a', 'ab', 'abcdefg', 'abc def', 'abc\\; def'):
self.assertFalse(_ChunkedValue.validate(data, 'TXT'))
self.assertFalse(_ChunkedValue.validate([data], 'TXT'))
# missing
for data in (None, []):
self.assertEqual(
['missing value(s)'], _ChunkedValue.validate(data, 'TXT')
)
# unescaped ;
self.assertEqual(
['unescaped ; in "hello; world"'],
_ChunkedValue.validate('hello; world', 'TXT'),
)
# non-asci
self.assertEqual(
['non ASCII character in "v=spf1 all"'],
_ChunkedValue.validate('v=spf1 all', 'TXT'),
)
self.assertEqual(
['non ASCII character in "Déjà vu"'],
_ChunkedValue.validate('Déjà vu', 'TXT'),
)