diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman_pgp/commands/eml_key.py | 2 | ||||
| -rw-r--r-- | src/mailman_pgp/commands/tests/test_key.py | 153 |
2 files changed, 154 insertions, 1 deletions
diff --git a/src/mailman_pgp/commands/eml_key.py b/src/mailman_pgp/commands/eml_key.py index fbae25e..e2a2443 100644 --- a/src/mailman_pgp/commands/eml_key.py +++ b/src/mailman_pgp/commands/eml_key.py @@ -87,7 +87,7 @@ def _cmd_set(pgp_list, mlist, msg, msgdata, arguments, results): def _cmd_confirm(pgp_list, mlist, msg, msgdata, arguments, results): if len(arguments) != 2: - print('Missing token', file=results) + print('Missing token.', file=results) return ContinueProcessing.no email = _get_email(msg) diff --git a/src/mailman_pgp/commands/tests/test_key.py b/src/mailman_pgp/commands/tests/test_key.py index 95f9766..b3d8c95 100644 --- a/src/mailman_pgp/commands/tests/test_key.py +++ b/src/mailman_pgp/commands/tests/test_key.py @@ -40,6 +40,59 @@ from mailman_pgp.workflows.base import CONFIRM_REQUEST from mailman_pgp.workflows.subscription import OpenSubscriptionPolicy +class TestPreDispatch(unittest.TestCase): + layer = PGPConfigLayer + + def setUp(self): + self.mlist = create_list('test@example.com') + + def test_no_arguments(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('No sub-command specified', results_msg.get_payload()) + + def test_wrong_subcommand(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key wroooooong' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('Wrong sub-command specified', results_msg.get_payload()) + + def test_no_pgp_list(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key set' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn("This mailing list doesn't have pgp enabled.", + results_msg.get_payload()) + + class TestPreSubscription(unittest.TestCase): layer = PGPConfigLayer @@ -87,6 +140,60 @@ class TestPreSubscription(unittest.TestCase): confirm_wrapped = PGPWrapper(confirm_request) self.assertTrue(confirm_wrapped.is_encrypted()) + def test_set_no_token(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key set' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('Missing token.', results_msg.get_payload()) + + def test_set_no_key(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key set token' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('No keys attached? Send a key.', + results_msg.get_payload()) + + def test_set_multiple_keys(self): + bart_key = load_key('rsa_1024.priv.asc') + anne_key = load_key('ecc_p256.priv.asc') + + set_message = Message() + set_message['From'] = 'bart@example.com' + set_message['To'] = 'test@example.com' + set_message['Subject'] = 'Re: key set token' + set_message.set_type('multipart/mixed') + wrapped_set_message = MIMEWrapper(set_message) + set_message = wrapped_set_message.attach_key(bart_key.pubkey) + wrapped_set_message = MIMEWrapper(set_message) + set_message = wrapped_set_message.attach_key(anne_key.pubkey) + + mm_config.switchboards['command'].enqueue(set_message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('More than one key! Send only one key.', + results_msg.get_payload()) + def test_confirm(self): self.mlist.subscription_policy = OpenSubscriptionPolicy bart = getUtility(IUserManager).create_address('bart@example.com', @@ -121,3 +228,49 @@ class TestPreSubscription(unittest.TestCase): pgp_address = PGPAddress.for_address(bart) self.assertTrue(pgp_address.key_confirmed) self.assertTrue(self.mlist.is_subscribed(bart)) + + def test_confirm_no_token(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key confirm' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('Missing token.', results_msg.get_payload()) + + def test_confirm_no_email(self): + message = Message() + message['From'] = '' + message['To'] = 'test@example.com' + message['Subject'] = 'key confirm token' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('No email to subscribe with.', results_msg.get_payload()) + + def test_confirm_no_pgp_address(self): + message = Message() + message['From'] = 'bart@example.com' + message['To'] = 'test@example.com' + message['Subject'] = 'key confirm token' + message.set_payload('') + + mm_config.switchboards['command'].enqueue(message, + listid='test.example.com') + make_testable_runner(CommandRunner, 'command').run() + items = get_queue_messages('virgin', expected_count=1) + results_msg = items[0].msg + + self.assertIn('A pgp enabled address not found.', + results_msg.get_payload()) |
