summaryrefslogtreecommitdiff
path: root/tests/test_protection.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_protection.py')
-rw-r--r--tests/test_protection.py43
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()