Example #1
0
 def test_moderation_checks_approval_required(self):
     # The moderator must approve the subscription request.
     self._mlist.unsubscription_policy = SubscriptionPolicy.moderate
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne)
     workflow.run_thru('moderation_checks')
     with patch.object(workflow, '_step_get_moderator_approval') as step:
         next(workflow)
     step.assert_called_once_with()
Example #2
0
 def test_moderation_checks_moderated_list(self):
     # The unsubscription policy requires moderation.
     self._mlist.unsubscription_policy = SubscriptionPolicy.moderate
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_moderation_checks') as step:
         next(workflow)
         step.assert_called_once_with()
Example #3
0
 def test_confirmation_checks_open_list(self):
     # An unsubscription from an open list does not need to be confirmed or
     # moderated.
     self._mlist.unsubscription_policy = SubscriptionPolicy.open
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_do_unsubscription') as step:
         next(workflow)
     step.assert_called_once_with()
Example #4
0
 def test_send_confirmation_checks_confirm_list(self):
     # The unsubscription policy requires user confirmation and the
     # unsubscription is not pre-confirmed.
     self._mlist.unsubscription_policy = SubscriptionPolicy.confirm
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_send_confirmation') as step:
         next(workflow)
     step.assert_called_once_with()
Example #5
0
 def test_confirmation_checks_no_user_confirmation_needed(self):
     # An unsubscription from a list which does not need user confirmation
     # skips to the moderation checks.
     self._mlist.unsubscription_policy = SubscriptionPolicy.moderate
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne,
                                       pre_confirmed=True)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_moderation_checks') as step:
         next(workflow)
     step.assert_called_once_with()
Example #6
0
 def test_confirmation_checks_confirm_pre_confirmed(self):
     # The unsubscription policy requires user-confirmation, but their
     # unsubscription is pre-confirmed. Since moderation is not reuqired,
     # the user will be immediately unsubscribed.
     self._mlist.unsubscription_policy = SubscriptionPolicy.confirm
     workflow = UnSubscriptionWorkflow(
         self._mlist, self.anne, pre_confirmed=True)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_do_unsubscription') as step:
         next(workflow)
     step.assert_called_once_with()
Example #7
0
 def test_confirmation_checks_confirm_then_moderate_pre_confirmed(self):
     # The unsubscription policy requires user confirmation, but their
     # unsubscription is pre-confirmed. Since moderation is required, that
     # check will be performed.
     self._mlist.unsubscription_policy = (
         SubscriptionPolicy.confirm_then_moderate)
     workflow = UnSubscriptionWorkflow(
         self._mlist, self.anne, pre_confirmed=True)
     workflow.run_thru('confirmation_checks')
     with patch.object(workflow, '_step_do_unsubscription') as step:
         next(workflow)
     step.assert_called_once_with()
Example #8
0
 def test_pended_data(self):
     # Test there is a Pendable object associated with a held
     # unsubscription request and it has some valid data associated with
     # it.
     self._mlist.unsubscription_policy = SubscriptionPolicy.confirm
     workflow = UnSubscriptionWorkflow(self._mlist, self.anne)
     with suppress(StopIteration):
         workflow.run_thru('send_confirmation')
     self.assertIsNotNone(workflow.token)
     pendable = getUtility(IPendings).confirm(workflow.token, expunge=False)
     self.assertEqual(pendable['list_id'], 'test.example.com')
     self.assertEqual(pendable['email'], '*****@*****.**')
     self.assertEqual(pendable['display_name'], '')
     self.assertEqual(pendable['when'], '2005-08-01T07:49:23')
     self.assertEqual(pendable['token_owner'], 'subscriber')
     # The token is still in the database.
     self._expected_pendings_count = 1
Example #9
0
 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')
Example #10
0
 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')