diff options
Diffstat (limited to 'tests/test_protection.py')
-rw-r--r-- | tests/test_protection.py | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/tests/test_protection.py b/tests/test_protection.py index 1220639..980a5ff 100644 --- a/tests/test_protection.py +++ b/tests/test_protection.py @@ -1,4 +1,6 @@ +import six import unittest +from base64 import b64encode from email.parser import Parser from zope.interface import implementer @@ -23,7 +25,7 @@ Subject: %(subject)s class ProtectTest(unittest.TestCase): - def test_pgp_mime(self): + def test_pgp_encrypted_mime(self): p = Parser() msg = p.parsestr(EMAIL) encrypter = Encrypter() @@ -33,7 +35,6 @@ class ProtectTest(unittest.TestCase): self.assertEqual(encmsg.get_payload(1).get_payload(), encrypter.encstr) self.assertEqual(BODY, encrypter.data[1:-1]) # remove '\n' self.assertEqual([TO], encrypter.encraddr) - self.assertEqual(FROM, encrypter.singaddr) self.assertEqual(encmsg.get_content_type(), "multipart/encrypted") def test_unobscured_headers(self): @@ -47,17 +48,51 @@ class ProtectTest(unittest.TestCase): self.assertEqual(encmsg['to'], TO) self.assertEqual(encmsg['subject'], SUBJECT) + def test_pgp_signed_mime(self): + p = Parser() + msg = p.parsestr(EMAIL) + signer = Signer() + conf = ProtectConfig(openpgp=signer) + encmsg = protect(msg, encrypt=False, config=conf) + + b64body = b64encode(six.b(BODY+'\n')) + self.assertEqual(six.b(encmsg.get_payload(0).get_payload()), b64body) + self.assertEqual(encmsg.get_payload(1).get_payload(), signer.signature) + self.assertEqual( + six.b("Content-Transfer-Encoding: base64\r\n\r\n")+b64body, + six.b(signer.data)) + self.assertEqual(encmsg.get_content_type(), "multipart/signed") + + def test_signed_headers(self): + p = Parser() + msg = p.parsestr(EMAIL) + signer = Signer() + conf = ProtectConfig(openpgp=signer) + encmsg = protect(msg, encrypt=False, config=conf) + + self.assertEqual(encmsg['from'], FROM) + self.assertEqual(encmsg['to'], TO) + self.assertEqual(encmsg['subject'], SUBJECT) + @implementer(IOpenPGP) class Encrypter(object): encstr = "this is encrypted" - def encrypt(self, data, encraddr, singaddr): + def encrypt(self, data, encraddr): self.data = data self.encraddr = encraddr - self.singaddr = singaddr return self.encstr +@implementer(IOpenPGP) +class Signer(object): + signature = "this is a signature" + + def sign(self, data): + self.data = data + return self.signature + + if __name__ == "__main__": unittest.main() |