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


Commits:
77fbc572 by Mark Sapiro at 2020-07-17T22:44:54-07:00
A member subscribed as a User can now be unsubscribed.

- - - - -
8b5b16b7 by Mark Sapiro at 2020-07-18T18:10:38+00:00
Merge branch 'fix_734' into 'master'

A member subscribed as a User can now be unsubscribed.

Closes #734

See merge request mailman/mailman!670
- - - - -


3 changed files:

- src/mailman/app/subscriptions.py
- src/mailman/app/tests/test_unsubscriptions.py
- src/mailman/docs/NEWS.rst


Changes:

=====================================
src/mailman/app/subscriptions.py
=====================================
@@ -396,7 +396,9 @@ class UnSubscriptionWorkflow(_SubscriptionWorkflowCommon):
         self.pre_approved = pre_approved
 
     def _step_subscription_checks(self):
-        assert self.mlist.is_subscribed(self.subscriber)
+        # XXX assert self.member is not None is sufficient, but ...
+        assert (self.member is not None and
+                self.mlist.is_subscribed(self.member.subscriber))
         self.push('confirmation_checks')
 
     def _step_confirmation_checks(self):


=====================================
src/mailman/app/tests/test_unsubscriptions.py
=====================================
@@ -26,7 +26,8 @@ from mailman.interfaces.mailinglist import SubscriptionPolicy
 from mailman.interfaces.pending import IPendings
 from mailman.interfaces.subscriptions import TokenOwner
 from mailman.interfaces.usermanager import IUserManager
-from mailman.testing.helpers import LogFileMark, get_queue_messages
+from mailman.testing.helpers import (LogFileMark, get_queue_messages,
+                                     set_preferred, subscribe)
 from mailman.testing.layers import ConfigLayer
 from mailman.utilities.datetime import now
 from unittest.mock import patch
@@ -95,6 +96,19 @@ class TestUnSubscriptionWorkflow(unittest.TestCase):
         self.assertRaises(AssertionError,
                           workflow.run_thru, 'subscription_checks')
 
+    def test_subscription_checks_for_user(self):
+        # subscription_checks must pass for IUser subscribed as IAddress.
+        member = subscribe(self._mlist, 'Bart')
+        set_preferred(member.user)
+        workflow = UnSubscriptionWorkflow(self._mlist, member.user)
+        workflow.run_thru('subscription_checks')
+
+    def test_subscription_checks_for_address(self):
+        # subscription_checks must pass for IAddress subscribed as IUser.
+        workflow = UnSubscriptionWorkflow(self._mlist,
+                                          self.anne.preferred_address)
+        workflow.run_thru('subscription_checks')
+
     def test_confirmation_checks_open_list(self):
         # An unsubscription from an open list does not need to be confirmed or
         # moderated.


=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -27,6 +27,7 @@ Bugs
   surrogates.  (Closes #732)
 * Bounce probes can now be sent to a member subscribed as a User.
   (Closes #739)
+* A member subscribed as a User can now be unsubscribed.  (Closes #734)
 
 Command line
 ------------



View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/bbc96f7fd56a9e89ffd2cdcd6aba3ccbc19237a0...8b5b16b7bdaa3224e0f28693854dd40e867f84fe

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/bbc96f7fd56a9e89ffd2cdcd6aba3ccbc19237a0...8b5b16b7bdaa3224e0f28693854dd40e867f84fe
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