test_mail.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from __future__ import absolute_import
  2. from celery.utils.mail import Message, Mailer, SSLError
  3. from celery.tests.case import Case, Mock, patch
  4. msg = Message(to='george@vandelay.com', sender='elaine@pendant.com',
  5. subject="What's up with Jerry?", body='???!')
  6. class test_Message(Case):
  7. def test_repr(self):
  8. self.assertTrue(repr(msg))
  9. def test_str(self):
  10. self.assertTrue(str(msg))
  11. class test_Mailer(Case):
  12. def test_send_wrapper(self):
  13. mailer = Mailer()
  14. mailer._send = Mock()
  15. mailer.send(msg)
  16. mailer._send.assert_called_with(msg)
  17. @patch('smtplib.SMTP_SSL', create=True)
  18. def test_send_ssl_tls(self, SMTP_SSL):
  19. mailer = Mailer(use_ssl=True, use_tls=True)
  20. client = SMTP_SSL.return_value = Mock()
  21. mailer._send(msg)
  22. self.assertTrue(client.starttls.called)
  23. self.assertEqual(client.ehlo.call_count, 2)
  24. client.quit.assert_called_with()
  25. client.sendmail.assert_called_with(msg.sender, msg.to, str(msg))
  26. mailer = Mailer(use_ssl=True, use_tls=True, user='foo',
  27. password='bar')
  28. mailer._send(msg)
  29. client.login.assert_called_with('foo', 'bar')
  30. @patch('smtplib.SMTP')
  31. def test_send(self, SMTP):
  32. client = SMTP.return_value = Mock()
  33. mailer = Mailer(use_ssl=False, use_tls=False)
  34. mailer._send(msg)
  35. client.sendmail.assert_called_with(msg.sender, msg.to, str(msg))
  36. client.quit.side_effect = SSLError()
  37. mailer._send(msg)
  38. client.close.assert_called_with()