diff options
| author | J08nY | 2017-06-27 21:29:37 +0200 |
|---|---|---|
| committer | J08nY | 2017-06-27 21:29:37 +0200 |
| commit | 5598bee159a8a8c2de2ea926ff11de029e0e4e1c (patch) | |
| tree | 5942774e03cc2c144b4dabfee2339b9bac104344 /src/mailman_pgp/rules | |
| parent | 39944faaa390f26ecb3f4bd77da86dbe580dc43a (diff) | |
| download | mailman-pgp-5598bee159a8a8c2de2ea926ff11de029e0e4e1c.tar.gz mailman-pgp-5598bee159a8a8c2de2ea926ff11de029e0e4e1c.tar.zst mailman-pgp-5598bee159a8a8c2de2ea926ff11de029e0e4e1c.zip | |
Integrate tests with Mailman, add basic integration tests.
Diffstat (limited to 'src/mailman_pgp/rules')
| -rw-r--r-- | src/mailman_pgp/rules/signature.py | 16 | ||||
| -rw-r--r-- | src/mailman_pgp/rules/tests/__init__.py | 0 | ||||
| -rw-r--r-- | src/mailman_pgp/rules/tests/test_signature.py | 47 |
3 files changed, 55 insertions, 8 deletions
diff --git a/src/mailman_pgp/rules/signature.py b/src/mailman_pgp/rules/signature.py index 126ac84..7ddc947 100644 --- a/src/mailman_pgp/rules/signature.py +++ b/src/mailman_pgp/rules/signature.py @@ -55,9 +55,9 @@ class Signature: def check(self, mlist, msg, msgdata): """See `IRule`.""" # Find the `PGPMailingList` this is for. - enc_list = query(PGPMailingList).filter_by( + pgp_list = query(PGPMailingList).filter_by( list_id=mlist.list_id).first() - if enc_list is None: + if pgp_list is None: raise ValueError('PGP enabled mailing list not found.') # Wrap the message to work with it. @@ -65,7 +65,7 @@ class Signature: # Take unsigned_msg_action if unsigned. if not wrapped.is_signed(): - action = enc_list.unsigned_msg_action + action = pgp_list.unsigned_msg_action if action != Action.defer: record_action(msg, msgdata, action, msg.sender, 'The message is unsigned.') @@ -73,7 +73,7 @@ class Signature: # Take `inline_pgp_action` if inline signed. if wrapped.inline.is_signed(): - action = enc_list.inline_pgp_action + action = pgp_list.inline_pgp_action if action != Action.defer: record_action(msg, msgdata, action, msg.sender, 'Inline PGP is not allowed.') @@ -83,19 +83,19 @@ class Signature: user_manager = getUtility(IUserManager) sender = msg.sender address = user_manager.get_address(sender) - enc_address = PGPAddress.query().filter_by( + pgp_address = PGPAddress.query().filter_by( email=address.email).first() - if enc_address is None: + if pgp_address is None: raise ValueError('PGP enabled address not found.') # See if we have a key. - key = enc_address.key + key = pgp_address.key if key is None: raise ValueError('No key?') # Take the `invalid_sig_action` if the verification failed. if not wrapped.verifies(key): - action = enc_list.invalid_sig_action + action = pgp_list.invalid_sig_action if action != Action.defer: record_action(msg, msgdata, action, msg.sender, 'Signature did not verify.') diff --git a/src/mailman_pgp/rules/tests/__init__.py b/src/mailman_pgp/rules/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/mailman_pgp/rules/tests/__init__.py diff --git a/src/mailman_pgp/rules/tests/test_signature.py b/src/mailman_pgp/rules/tests/test_signature.py new file mode 100644 index 0000000..1e509e7 --- /dev/null +++ b/src/mailman_pgp/rules/tests/test_signature.py @@ -0,0 +1,47 @@ +# 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/>. +from unittest import TestCase + +from mailman.app.lifecycle import create_list +from mailman.config import config +from mailman.testing.helpers import specialized_message_from_string as mfs +from mailman.testing.layers import ConfigLayer + +from mailman_pgp.rules.signature import Signature + + +class TestSignature(TestCase): + layer = ConfigLayer + + def test_has_rule(self): + self.assertIn(Signature.name, config.rules.keys()) + + def test_no_pgp_list(self): + ordinary_list = create_list('ordinary@example.com') + msg = mfs("""\ +From: anne@example.com +To: ordinary@example.com +Subject: A Message with non-ascii body +Message-ID: <ant> +MIME-Version: 1.0 + +A message body. +""") + + rule = config.rules[Signature.name] + with self.assertRaises(ValueError): + rule.check(ordinary_list, msg, {}) |
