add line separator support

This commit is contained in:
Dick Marinus
2018-12-23 13:26:05 +01:00
parent 0555cb595d
commit 6bc38aaf9b
6 changed files with 69 additions and 15 deletions
+16
View File
@@ -46,6 +46,11 @@ class TestFold(unittest.TestCase):
self.assertEqual(
b"foo" * 24 + b"\r\n foo", dkim.fold(b"foo" * 25))
def test_linesep(self):
self.assertEqual(
b"foo" * 24 + b"\n foo", dkim.fold(b"foo" * 25, linesep=b"\n"))
class TestSignAndVerify(unittest.TestCase):
"""End-to-end signature and verification tests."""
@@ -203,6 +208,17 @@ p=11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo="""
res = d.verify(dnsfunc=self.dnsfunc5)
self.assertTrue(res)
def test_verifies_lflinesep(self):
# A message verifies after being signed.
for header_algo in (b"simple", b"relaxed"):
for body_algo in (b"simple", b"relaxed"):
sig = dkim.sign(
self.message, b"test", b"example.com", self.key,
canonicalize=(header_algo, body_algo), linesep=b"\n")
res = dkim.verify(sig + self.message, dnsfunc=self.dnsfunc)
self.assertFalse(b'\r\n' in sig)
self.assertTrue(res)
def test_implicit_k(self):
# A message verifies after being signed when k= tag is not provided.
for header_algo in (b"simple", b"relaxed"):
+25
View File
@@ -22,6 +22,7 @@ from dkim.util import (
DuplicateTag,
InvalidTagSpec,
parse_tag_value,
get_linesep,
)
@@ -75,6 +76,30 @@ class TestParseTagValue(unittest.TestCase):
self.assertEqual(len(sig),11)
class TestGetLineSep(unittest.TestCase):
"""Line seperator probing tests."""
def test_default(self):
self.assertEqual(
b'\r\n',
get_linesep(b'abc'))
def test_withcrlf(self):
self.assertEqual(
b'\r\n',
get_linesep(b'abc\r\n'))
def test_withlf(self):
self.assertEqual(
b'\n',
get_linesep(b'abc\n'))
def test_toosmall(self):
self.assertEqual(
b'\r\n',
get_linesep(b'a'))
def test_suite():
from unittest import TestLoader
return TestLoader().loadTestsFromName(__name__)