summaryrefslogtreecommitdiff
path: root/src/mailman/commands/tests/test_confirm.py
diff options
context:
space:
mode:
authorBarry Warsaw2017-07-22 03:02:05 +0000
committerBarry Warsaw2017-07-22 03:02:05 +0000
commitf00b94f18e1d82d1488cbcee6053f03423bc2f49 (patch)
tree1a8e56dff0eab71e58e5fc9ecc5f3c614d7edca7 /src/mailman/commands/tests/test_confirm.py
parentf54c045519300f6f70947d1114f46c2b8ae0d368 (diff)
downloadmailman-f00b94f18e1d82d1488cbcee6053f03423bc2f49.tar.gz
mailman-f00b94f18e1d82d1488cbcee6053f03423bc2f49.tar.zst
mailman-f00b94f18e1d82d1488cbcee6053f03423bc2f49.zip
Diffstat (limited to 'src/mailman/commands/tests/test_confirm.py')
-rw-r--r--src/mailman/commands/tests/test_confirm.py175
1 files changed, 0 insertions, 175 deletions
diff --git a/src/mailman/commands/tests/test_confirm.py b/src/mailman/commands/tests/test_confirm.py
deleted file mode 100644
index 1ef392b76..000000000
--- a/src/mailman/commands/tests/test_confirm.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (C) 2012-2017 by the Free Software Foundation, Inc.
-#
-# This file is part of GNU Mailman.
-#
-# GNU Mailman 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.
-#
-# GNU Mailman 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
-# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
-
-"""Test the `confirm` command."""
-
-import unittest
-
-from mailman.app.lifecycle import create_list
-from mailman.commands.eml_confirm import Confirm
-from mailman.config import config
-from mailman.email.message import Message
-from mailman.interfaces.command import ContinueProcessing
-from mailman.interfaces.mailinglist import SubscriptionPolicy
-from mailman.interfaces.subscriptions import ISubscriptionManager
-from mailman.interfaces.usermanager import IUserManager
-from mailman.runners.command import CommandRunner, Results
-from mailman.testing.helpers import (
- get_queue_messages, make_testable_runner,
- specialized_message_from_string as mfs, subscribe)
-from mailman.testing.layers import ConfigLayer
-from zope.component import getUtility
-
-
-class TestConfirmJoin(unittest.TestCase):
- """Test the `confirm` command when joining a mailing list."""
-
- layer = ConfigLayer
-
- def setUp(self):
- self._mlist = create_list('test@example.com')
- anne = getUtility(IUserManager).create_address(
- 'anne@example.com', 'Anne Person')
- self._token, token_owner, member = ISubscriptionManager(
- self._mlist).register(anne)
- self._command = Confirm()
- # Clear the virgin queue.
- get_queue_messages('virgin')
-
- def test_welcome_message(self):
- # A confirmation causes a welcome message to be sent to the member, if
- # enabled by the mailing list.
- status = self._command.process(
- self._mlist, Message(), {}, (self._token,), Results())
- self.assertEqual(status, ContinueProcessing.yes)
- # There should be one messages in the queue; the welcome message.
- items = get_queue_messages('virgin', expected_count=1)
- # Grab the welcome message.
- welcome = items[0].msg
- self.assertEqual(welcome['subject'],
- 'Welcome to the "Test" mailing list')
- self.assertEqual(welcome['to'], 'Anne Person <anne@example.com>')
-
- def test_no_welcome_message(self):
- # When configured not to send a welcome message, none is sent.
- self._mlist.send_welcome_message = False
- status = self._command.process(
- self._mlist, Message(), {}, (self._token,), Results())
- self.assertEqual(status, ContinueProcessing.yes)
- # There will be no messages in the queue.
- get_queue_messages('virgin', expected_count=0)
-
-
-class TestConfirmLeave(unittest.TestCase):
- """Test the `confirm` command when leaving a mailing list."""
-
- layer = ConfigLayer
-
- def setUp(self):
- self._mlist = create_list('test@example.com')
- anne = subscribe(self._mlist, 'Anne', email='anne@example.com')
- self._token, token_owner, member = ISubscriptionManager(
- self._mlist).unregister(anne.address)
-
- def test_confirm_leave(self):
- msg = mfs("""\
-From: Anne Person <anne@example.com>
-To: test-confirm+{token}@example.com
-Subject: Re: confirm {token}
-
-""".format(token=self._token))
- Confirm().process(self._mlist, msg, {}, (self._token,), Results())
- # Anne is no longer a member of the mailing list.
- member = self._mlist.members.get_member('anne@example.com')
- self.assertIsNone(member)
-
-
-class TestEmailResponses(unittest.TestCase):
- """Test the `confirm` command through the command runner."""
-
- layer = ConfigLayer
-
- def setUp(self):
- self._mlist = create_list('test@example.com')
-
- def test_confirm_then_moderate_workflow(self):
- # Issue #114 describes a problem when confirming the moderation email.
- self._mlist.subscription_policy = (
- SubscriptionPolicy.confirm_then_moderate)
- bart = getUtility(IUserManager).create_address(
- 'bart@example.com', 'Bart Person')
- # Clear any previously queued confirmation messages.
- get_queue_messages('virgin')
- self._token, token_owner, member = ISubscriptionManager(
- self._mlist).register(bart)
- # There should now be one email message in the virgin queue, i.e. the
- # confirmation message sent to Bart.
- items = get_queue_messages('virgin', expected_count=1)
- msg = items[0].msg
- # Confirmations come first, so this one goes to the subscriber.
- self.assertEqual(msg['to'], 'bart@example.com')
- confirm, token = str(msg['subject']).split()
- self.assertEqual(confirm, 'confirm')
- self.assertEqual(token, self._token)
- # Craft a confirmation response with the expected tokens.
- user_response = Message()
- user_response['From'] = 'bart@example.com'
- user_response['To'] = 'test-confirm+{}@example.com'.format(token)
- user_response['Subject'] = 'Re: confirm {}'.format(token)
- user_response.set_payload('')
- # Process the message through the command runner.
- config.switchboards['command'].enqueue(
- user_response, listid='test.example.com')
- make_testable_runner(CommandRunner, 'command').run()
- # There are now two messages in the virgin queue. One is going to the
- # subscriber containing the results of their confirmation message, and
- # the other is to the moderators informing them that they need to
- # handle the moderation queue.
- items = get_queue_messages('virgin', expected_count=2)
- if items[0].msg['to'] == 'bart@example.com':
- results = items[0].msg
- moderator_msg = items[1].msg
- else:
- results = items[1].msg
- moderator_msg = items[0].msg
- # Check the moderator message first.
- self.assertEqual(moderator_msg['to'], 'test-owner@example.com')
- self.assertEqual(
- moderator_msg['subject'],
- 'New subscription request to Test from bart@example.com')
- lines = moderator_msg.get_payload().splitlines()
- self.assertEqual(
- lines[-2].strip(),
- 'For: Bart Person <bart@example.com>')
- self.assertEqual(lines[-1].strip(), 'List: test@example.com')
- # Now check the results message.
- self.assertEqual(
- str(results['subject']), 'The results of your email commands')
- self.assertMultiLineEqual(results.get_payload(), """\
-The results of your email command are provided below.
-
-- Original message details:
-From: bart@example.com
-Subject: Re: confirm {}
-Date: n/a
-Message-ID: n/a
-
-- Results:
-Confirmed
-
-- Done.
-""".format(token))