# 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 . """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, WrapperTestCase class InlineWrapperTestCase(WrapperTestCase): wrapper = InlineWrapper class TestSigning(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_cleartext_signed.eml'), True), (load_message('data/inline_cleartext_signed_invalid.eml'), True), (load_message('data/inline_signed.eml'), True), (load_message('data/inline_signed_corrupted.eml'), False), (load_message('data/clear.eml'), False), (load_message('data/inline_encrypted.eml'), False) ]) def test_is_signed(self, message, signed): super().is_signed(message, signed) @parameterized.expand([ (load_message('data/clear.eml'), load_key('data/rsa_1024.priv.asc')), (load_message('data/clear.eml'), load_key('data/ecc_p256.priv.asc')) ]) def test_sign(self, message, key): super().sign(message, key) @parameterized.expand([ (load_message('data/clear.eml'), load_key('data/rsa_1024.priv.asc'), load_key('data/rsa_1024.pub.asc')), (load_message('data/clear.eml'), load_key('data/ecc_p256.priv.asc'), load_key('data/ecc_p256.pub.asc')) ]) def test_sign_verify(self, message, priv, pub): super().sign_verify(message, priv, pub) @parameterized.expand([ (load_message('data/inline_cleartext_signed.eml'), load_key('data/rsa_1024.pub.asc'), True), (load_message('data/inline_cleartext_signed_invalid.eml'), load_key('data/rsa_1024.pub.asc'), False), (load_message('data/inline_signed.eml'), load_key('data/rsa_1024.pub.asc'), True), (load_message('data/inline_signed_corrupted.eml'), load_key('data/rsa_1024.pub.asc'), False), ]) def test_verify(self, message, key, valid): super().verify(message, key, valid) class TestEncryption(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_encrypted.eml'), True), (load_message('data/inline_cleartext_signed.eml'), False), (load_message('data/inline_cleartext_signed_invalid.eml'), False), (load_message('data/inline_signed.eml'), False), (load_message('data/inline_signed_corrupted.eml'), False), (load_message('data/clear.eml'), False) ]) def test_is_encrypted(self, message, encrypted): super().is_encrypted(message, encrypted) @parameterized.expand([ (load_message('data/clear.eml'), load_key('data/rsa_1024.pub.asc')), (load_message('data/clear.eml'), (load_key('data/rsa_1024.pub.asc'), load_key('data/ecc_p256.pub.asc'))) ]) def test_encrypt(self, message, keys, **kwargs): if isinstance(keys, tuple): super().encrypt(message, *keys, **kwargs) else: super().encrypt(message, keys, **kwargs) @parameterized.expand([ (load_message('data/clear.eml'), load_key('data/rsa_1024.pub.asc'), load_key('data/rsa_1024.priv.asc')), (load_message('data/clear.eml'), load_key('data/ecc_p256.pub.asc'), load_key('data/ecc_p256.priv.asc')) ]) def test_encrypt_decrypt(self, message, pub, priv): super().encrypt_decrypt(message, pub, priv) @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(InlineWrapperTestCase): @parameterized.expand([ (load_message('data/inline_privkey.eml'), True), (load_message('data/inline_pubkey.eml'), True), (load_message('data/clear.eml'), False), (load_message('data/inline_cleartext_signed.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')]) ]) def test_keys(self, message, keys): super().keys(message, keys)