summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2016-04-23 23:32:27 -0400
committerKali Kaneko <kali@leap.se>2016-04-23 23:32:27 -0400
commit04e5136c3d2fbcfd30a374f95d8b7c5f819e0d27 (patch)
tree4f1bc6493dc2979826c2405a60d01f52bdd80b98
parentf07b05c98563dc8f3ad24cd17e0c1e1f2c557be8 (diff)
test stub
-rw-r--r--tests/test_holes.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/test_holes.py b/tests/test_holes.py
new file mode 100644
index 0000000..92ac60e
--- /dev/null
+++ b/tests/test_holes.py
@@ -0,0 +1,73 @@
+import os
+from email.parser import Parser
+
+import unittest
+import gnupg
+
+from memoryhole import memoryhole
+
+
+here = os.path.dirname(os.path.realpath(__file__))
+corpus = os.path.join(here, 'corpus')
+gpgdata = os.path.join(corpus, 'OpenPGP')
+
+
+class MemoryHoleTest(unittest.TestCase):
+
+ def setUp(self):
+ self.gpg = gnupg.GPG(
+ binary='/usr/bin/gpg',
+ homedir='/tmp/memoryhole-tests', use_agent=False)
+
+ def test_texthtml_signed(self):
+ sampleid = 'A'
+ keyowner = 'julia'
+ _load_key(keyowner, self.gpg)
+
+ orig = _get_raw_message(sampleid)
+ boundary = _boundary_factory('c')
+ expected = _load_expected_msg(sampleid)
+ msg = memoryhole.protect_message(
+ orig, self.gpg, boundary=boundary,
+ sign_digest_algo='SHA256', passphrase='_' + keyowner + '_')
+ # TODO -- how to compare messages??
+ self.assertEqual(dict(msg), dict(expected))
+
+
+def _load_key(keyname, gpg):
+ with open(gpgdata + '/' + keyname + '.key') as keyf:
+ keydata = keyf.read()
+ gpg.import_keys(keydata)
+ with open(gpgdata + '/' + keyname + '.pgp') as keyf:
+ keydata = keyf.read()
+ gpg.import_keys(keydata)
+
+def _get_raw_message(identifier):
+ path = os.path.join(corpus, 'sample.' + identifier + '.eml')
+ return _parse(_load_file(path))
+
+def _load_expected_msg(identifier):
+ path = os.path.join(corpus, 'expected.' + identifier + '.eml')
+ return _parse(_load_file(path))
+
+def _load_file(path):
+ with open(path) as f:
+ raw = f.read()
+ return raw
+
+def _parse(raw):
+ parser = Parser()
+ return parser.parsestr(raw)
+
+def _boundary_factory(start):
+ counter = {'value': ord(start)}
+
+ def _gen_boundary():
+ boundary = chr(counter['value']) * 12
+ counter['value'] -= 1
+ return boundary
+ return _gen_boundary
+
+
+if __name__ == "__main__":
+ unittest.main()