diff options
| author | J08nY | 2017-06-22 20:23:37 +0200 |
|---|---|---|
| committer | J08nY | 2017-06-22 20:23:37 +0200 |
| commit | 35f73955ab03c65936aad59511d92d87f645e3ea (patch) | |
| tree | 22fe38f1444750d9149bdf09057cde4d4534625a /src | |
| parent | 263577d4826630e6871b35c73fe3dd114ee70e22 (diff) | |
| download | mailman-pgp-35f73955ab03c65936aad59511d92d87f645e3ea.tar.gz mailman-pgp-35f73955ab03c65936aad59511d92d87f645e3ea.tar.zst mailman-pgp-35f73955ab03c65936aad59511d92d87f645e3ea.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman_pgp/pgp/tests/base.py | 36 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/test_inline.py | 47 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/test_mime.py | 37 | ||||
| -rw-r--r-- | src/mailman_pgp/pgp/tests/test_wrapper.py | 125 |
4 files changed, 185 insertions, 60 deletions
diff --git a/src/mailman_pgp/pgp/tests/base.py b/src/mailman_pgp/pgp/tests/base.py index 7d63602..b07fdf9 100644 --- a/src/mailman_pgp/pgp/tests/base.py +++ b/src/mailman_pgp/pgp/tests/base.py @@ -16,6 +16,7 @@ # this program. If not, see <http://www.gnu.org/licenses/>. """""" +import unittest from email import message_from_file from pgpy import PGPKey @@ -33,5 +34,36 @@ def load_key(path): return key -class PGPTestCase(): - pass +class WrapperTestCase(unittest.TestCase): + wrapper = None + + def is_signed(self, message, signed): + wrapped = self.wrapper(message) + self.assertEqual(wrapped.is_signed(), signed) + + def verify(self, message, key, valid): + wrapped = self.wrapper(message) + self.assertEqual(bool(wrapped.verify(key)), valid) + + def is_encrypted(self, message, encrypted): + wrapped = self.wrapper(message) + self.assertEqual(wrapped.is_encrypted(), encrypted) + + def decrypt(self, message, key, clear): + wrapped = self.wrapper(message) + self.assertEqual(wrapped.decrypt(key).message, + bytearray(clear, 'latin-1')) + + def has_keys(self, message, has_keys): + wrapped = self.wrapper(message) + self.assertEqual(wrapped.has_keys(), has_keys) + + def keys(self, message, keys): + wrapped = self.wrapper(message) + loaded = list(wrapped.keys()) + loaded_fingerprints = list(map(lambda key: key.fingerprint, loaded)) + + self.assertEqual(len(loaded), len(keys)) + + fingerprints = list(map(lambda key: key.fingerprint, keys)) + self.assertListEqual(loaded_fingerprints, fingerprints) diff --git a/src/mailman_pgp/pgp/tests/test_inline.py b/src/mailman_pgp/pgp/tests/test_inline.py index d144991..b6d84ec 100644 --- a/src/mailman_pgp/pgp/tests/test_inline.py +++ b/src/mailman_pgp/pgp/tests/test_inline.py @@ -15,19 +15,19 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see <http://www.gnu.org/licenses/>. -"""""" -import unittest +"""Tests for the inline wrapper.""" from parameterized import parameterized from mailman_pgp.pgp.inline import InlineWrapper -from mailman_pgp.pgp.tests.base import load_key, load_message, PGPTestCase +from mailman_pgp.pgp.tests.base import load_key, load_message, WrapperTestCase -class TestSigning(PGPTestCase, unittest.TestCase): - def setUp(self): - self.wrapper = InlineWrapper +class InlineWrapperTestCase(WrapperTestCase): + wrapper = InlineWrapper + +class TestSigning(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_signed.eml'), True), @@ -39,8 +39,7 @@ class TestSigning(PGPTestCase, unittest.TestCase): False) ]) def test_is_signed(self, message, signed): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.is_signed(), signed) + super().is_signed(message, signed) def test_sign(self): pass @@ -54,14 +53,10 @@ class TestSigning(PGPTestCase, unittest.TestCase): False) ]) def test_verify(self, message, key, valid): - wrapped = self.wrapper(message) - self.assertEqual(bool(wrapped.verify(key)), valid) - + super().verify(message, key, valid) -class TestEncryption(PGPTestCase, unittest.TestCase): - def setUp(self): - self.wrapper = InlineWrapper +class TestEncryption(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_encrypted.eml'), True), @@ -73,8 +68,7 @@ class TestEncryption(PGPTestCase, unittest.TestCase): False) ]) def test_is_encrypted(self, message, encrypted): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.is_encrypted(), encrypted) + super().is_encrypted(message, encrypted) def test_encrypt(self): pass @@ -85,15 +79,10 @@ class TestEncryption(PGPTestCase, unittest.TestCase): 'Some encrypted text.\n\n') ]) def test_decrypt(self, message, key, clear): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.decrypt(key).message, - bytearray(clear, 'latin-1')) - + super().decrypt(message, key, clear) -class TestKeys(PGPTestCase, unittest.TestCase): - def setUp(self): - self.wrapper = InlineWrapper +class TestKeys(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_privkey.eml'), True), @@ -105,8 +94,7 @@ class TestKeys(PGPTestCase, unittest.TestCase): False) ]) def test_has_keys(self, message, has_keys): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.has_keys(), has_keys) + super().has_keys(message, has_keys) @parameterized.expand([ (load_message('data/inline_privkey.eml'), @@ -115,11 +103,4 @@ class TestKeys(PGPTestCase, unittest.TestCase): [load_key('data/rsa_1024.pub.asc')]) ]) def test_keys(self, message, keys): - wrapped = self.wrapper(message) - loaded = list(wrapped.keys()) - loaded_fingerprints = list(map(lambda key: key.fingerprint, loaded)) - - self.assertEqual(len(loaded), len(keys)) - - fingerprints = list(map(lambda key: key.fingerprint, keys)) - self.assertListEqual(loaded_fingerprints, fingerprints) + super().keys(message, keys) diff --git a/src/mailman_pgp/pgp/tests/test_mime.py b/src/mailman_pgp/pgp/tests/test_mime.py index 8e00e9c..0ef5f0a 100644 --- a/src/mailman_pgp/pgp/tests/test_mime.py +++ b/src/mailman_pgp/pgp/tests/test_mime.py @@ -15,19 +15,19 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see <http://www.gnu.org/licenses/>. -"""""" -import unittest +"""Tests for the MIME wrapper.""" from parameterized import parameterized from mailman_pgp.pgp.mime import MIMEWrapper -from mailman_pgp.pgp.tests.base import load_key, load_message, PGPTestCase +from mailman_pgp.pgp.tests.base import load_key, load_message, WrapperTestCase -class TestSigning(PGPTestCase, unittest.TestCase): - def setUp(self): - self.wrapper = MIMEWrapper +class MIMEWrapperTestCase(WrapperTestCase): + wrapper = MIMEWrapper + +class TestSigning(MIMEWrapperTestCase): @parameterized.expand([ (load_message('data/mime_signed.eml'), True), @@ -37,8 +37,7 @@ class TestSigning(PGPTestCase, unittest.TestCase): False) ]) def test_is_signed(self, message, signed): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.is_signed(), signed) + super().is_signed(message, signed) def test_sign(self): pass @@ -52,11 +51,10 @@ class TestSigning(PGPTestCase, unittest.TestCase): False) ]) def test_verify(self, message, key, valid): - wrapped = self.wrapper(message) - self.assertEqual(bool(wrapped.verify(key)), valid) + super().verify(message, key, valid) -class TestEncryption(PGPTestCase, unittest.TestCase): +class TestEncryption(MIMEWrapperTestCase): def test_is_encrypted(self): pass @@ -67,10 +65,7 @@ class TestEncryption(PGPTestCase, unittest.TestCase): pass -class TestKeys(PGPTestCase, unittest.TestCase): - def setUp(self): - self.wrapper = MIMEWrapper - +class TestKeys(MIMEWrapperTestCase): @parameterized.expand([ (load_message('data/mime_privkey.eml'), True), @@ -82,8 +77,7 @@ class TestKeys(PGPTestCase, unittest.TestCase): False) ]) def test_has_keys(self, message, has_keys): - wrapped = self.wrapper(message) - self.assertEqual(wrapped.has_keys(), has_keys) + super().has_keys(message, has_keys) @parameterized.expand([ (load_message('data/mime_privkey.eml'), @@ -92,11 +86,4 @@ class TestKeys(PGPTestCase, unittest.TestCase): [load_key('data/rsa_1024.pub.asc')]) ]) def test_keys(self, message, keys): - wrapped = self.wrapper(message) - loaded = list(wrapped.keys()) - loaded_fingerprints = list(map(lambda key: key.fingerprint, loaded)) - - self.assertEqual(len(loaded), len(keys)) - - fingerprints = list(map(lambda key: key.fingerprint, keys)) - self.assertListEqual(loaded_fingerprints, fingerprints) + super().keys(message, keys) diff --git a/src/mailman_pgp/pgp/tests/test_wrapper.py b/src/mailman_pgp/pgp/tests/test_wrapper.py new file mode 100644 index 0000000..256d7d1 --- /dev/null +++ b/src/mailman_pgp/pgp/tests/test_wrapper.py @@ -0,0 +1,125 @@ +# Copyright (C) 2017 Jan Jancar +# +# This file is a part of the Mailman PGP plugin. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see <http://www.gnu.org/licenses/>. + +"""Tests for the combined wrapper.""" +from parameterized import parameterized + +from mailman_pgp.pgp.tests.base import WrapperTestCase, load_message, load_key +from mailman_pgp.pgp.wrapper import PGPWrapper + + +class PGPWrapperTestCase(WrapperTestCase): + wrapper = PGPWrapper + + +class TestSigning(PGPWrapperTestCase): + @parameterized.expand([ + (load_message('data/inline_signed.eml'), + True), + (load_message('data/inline_signed_invalid.eml'), + True), + (load_message('data/inline_encrypted.eml'), + False), + (load_message('data/mime_signed.eml'), + True), + (load_message('data/mime_signed_invalid.eml'), + True), + (load_message('data/clear.eml'), + False) + ]) + def test_is_signed(self, message, signed): + super().is_signed(message, signed) + + def test_sign(self): + pass + + @parameterized.expand([ + (load_message('data/inline_signed.eml'), + load_key('data/rsa_1024.pub.asc'), + True), + (load_message('data/inline_signed_invalid.eml'), + load_key('data/rsa_1024.pub.asc'), + False), + (load_message('data/mime_signed.eml'), + load_key('data/rsa_1024.pub.asc'), + True), + (load_message('data/mime_signed_invalid.eml'), + load_key('data/rsa_1024.pub.asc'), + False) + ]) + def test_verify(self, message, key, valid): + super().verify(message, key, valid) + + +class TestEncryption(PGPWrapperTestCase): + @parameterized.expand([ + (load_message('data/inline_encrypted.eml'), + True), + (load_message('data/inline_signed.eml'), + False), + (load_message('data/inline_signed_invalid.eml'), + False), + (load_message('data/clear.eml'), + False) + ]) + def test_is_encrypted(self, message, encrypted): + super().is_encrypted(message, encrypted) + + def test_encrypt(self): + pass + + @parameterized.expand([ + (load_message('data/inline_encrypted.eml'), + load_key('data/rsa_1024.priv.asc'), + 'Some encrypted text.\n\n') + ]) + def test_decrypt(self, message, key, clear): + super().decrypt(message, key, clear) + + +class TestKeys(PGPWrapperTestCase): + @parameterized.expand([ + (load_message('data/inline_privkey.eml'), + True), + (load_message('data/inline_pubkey.eml'), + True), + (load_message('data/inline_signed.eml'), + False), + (load_message('data/mime_privkey.eml'), + True), + (load_message('data/mime_pubkey.eml'), + True), + (load_message('data/mime_signed.eml'), + False), + (load_message('data/clear.eml'), + False) + ]) + def test_has_keys(self, message, has_keys): + super().has_keys(message, has_keys) + + @parameterized.expand([ + (load_message('data/inline_privkey.eml'), + [load_key('data/rsa_1024.priv.asc')]), + (load_message('data/inline_pubkey.eml'), + [load_key('data/rsa_1024.pub.asc')]), + (load_message('data/mime_privkey.eml'), + [load_key('data/rsa_1024.priv.asc')]), + (load_message('data/mime_pubkey.eml'), + [load_key('data/rsa_1024.pub.asc')]) + ]) + def test_keys(self, message, keys): + super().keys(message, keys) |
