def test_email_callback_with_one_retry(self, mock_bespin_api,
                                        mock_work_queue_connection):
     mock_bespin_api.return_value.email_message_send.side_effect = [
         requests.HTTPError()
     ]
     mail_sender = MailSender(
         config=Mock(email_retry_count=1, retry_wait_ms=2000))
     mail_sender.email_callback(None, None, None,
                                pickle.dumps({'send_email': '5'}))
     mock_bespin_api.return_value.email_message_send.assert_has_calls(
         [call('5')])
     args, kwargs = mail_sender.channel.basic_publish.call_args
     sent_body = pickle.loads(kwargs['body'])
     self.assertEqual(sent_body['send_email'], '5')
     self.assertEqual(sent_body['retry_count'],
                      0)  # retry count should be decremented
     self.assertEqual(kwargs['properties'].expiration, 2000)
     self.assertEqual(kwargs['routing_key'], 'SendEmail')
 def test_email_callback_works_first_time(self, mock_bespin_api,
                                          mock_work_queue_connection):
     mail_sender = MailSender(config=Mock())
     mail_sender.email_callback(None, None, None,
                                pickle.dumps({'send_email': '5'}))
     mock_bespin_api.return_value.email_message_send.assert_called_with('5')