test_mail.py 1.6 KB

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