Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core


Commits:
e52a1514 by Mark Sapiro at 2022-10-22T23:37:04+00:00
Catch AlreadySubscribedError in email confirm command.

Fixes #1035

- - - - -
ca7451dd by Mark Sapiro at 2022-10-22T23:37:04+00:00
Merge branch 'esub' into 'master'

Catch AlreadySubscribedError in email confirm command.

Closes #1035

See merge request mailman/mailman!1045
- - - - -


3 changed files:

- src/mailman/commands/eml_confirm.py
- src/mailman/commands/tests/test_eml_confirm.py
- src/mailman/docs/NEWS.rst


Changes:

=====================================
src/mailman/commands/eml_confirm.py
=====================================
@@ -21,7 +21,10 @@ from mailman.app.moderator import handle_message
 from mailman.core.i18n import _
 from mailman.interfaces.action import Action
 from mailman.interfaces.command import ContinueProcessing, IEmailCommand
-from mailman.interfaces.member import MembershipIsBannedError
+from mailman.interfaces.member import (
+    AlreadySubscribedError,
+    MembershipIsBannedError,
+)
 from mailman.interfaces.pending import IPendings
 from mailman.interfaces.subscriptions import ISubscriptionManager, TokenOwner
 from mailman.rules.approved import Approved
@@ -85,7 +88,7 @@ class Confirm:
         except LookupError:
             # The token must not exist in the database.
             succeeded = False
-        except MembershipIsBannedError as e:
+        except (MembershipIsBannedError, AlreadySubscribedError) as e:
             print(str(e), file=results)
             return ContinueProcessing.no
         if succeeded:


=====================================
src/mailman/commands/tests/test_eml_confirm.py
=====================================
@@ -51,6 +51,7 @@ class TestConfirmJoin(unittest.TestCase):
         self._mlist = create_list('t...@example.com')
         anne = getUtility(IUserManager).create_address(
             'a...@example.com', 'Anne Person')
+        self._address = anne
         self._token, token_owner, member = ISubscriptionManager(
             self._mlist).register(anne)
         self._command = Confirm()
@@ -103,6 +104,19 @@ class TestConfirmJoin(unittest.TestCase):
         self.assertIn('a...@example.com is not allowed to subscribe to '
                       't...@example.com', str(result))
 
+    def test_confirm_already_member(self):
+        # Confirmation of an already subscribed address should return an
+        # appropriate error.
+        # Subscribe anne.
+        self._mlist.subscribe(self._address)
+        result = Results()
+        status = self._command.process(
+            self._mlist, Message(), {}, (self._token,), result)
+        self.assertEqual(status, ContinueProcessing.no)
+        # The result will contain an error message.
+        self.assertIn('a...@example.com is already a MemberRole.member of '
+                      'mailing list t...@example.com', str(result))
+
 
 class TestConfirmLeave(unittest.TestCase):
     """Test the `confirm` command when leaving a mailing list."""


=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -81,6 +81,8 @@ Bugs fixed
   (Closes #1032)
 * An ``AttributeError`` thrown in the task runner, possibly due to a race
   condition, is now avoided.  (Closes #1028)
+* Email confirmation of a subscription request for a member is no longer
+  shunted.  (Closes #1035)
 
 REST
 ----



View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/638f08eca1a539aa75672d1c33c6e6b506302c60...ca7451dd105719a123659d6ecc7b95e377ccd5b5

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/638f08eca1a539aa75672d1c33c6e6b506302c60...ca7451dd105719a123659d6ecc7b95e377ccd5b5
You're receiving this email because of your account on gitlab.com.


_______________________________________________
Mailman-checkins mailing list -- mailman-checkins@python.org
To unsubscribe send an email to mailman-checkins-le...@python.org
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: arch...@jab.org

Reply via email to