aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman_pgp/commands/eml_key.py2
-rw-r--r--src/mailman_pgp/commands/tests/test_key.py153
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())