1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from __future__ import absolute_import
- from celery.utils.mail import Message, Mailer, SSLError, ErrorMail
- from celery.tests.case import Case, Mock, patch
- msg = Message(to='george@vandelay.com', sender='elaine@pendant.com',
- subject="What's up with Jerry?", body='???!')
- class test_Message(Case):
- def test_repr(self):
- self.assertTrue(repr(msg))
- def test_str(self):
- self.assertTrue(str(msg))
- class test_Mailer(Case):
- def test_send_wrapper(self):
- mailer = Mailer()
- mailer._send = Mock()
- mailer.send(msg)
- mailer._send.assert_called_with(msg)
- @patch('smtplib.SMTP_SSL', create=True)
- def test_send_ssl_tls(self, SMTP_SSL):
- mailer = Mailer(use_ssl=True, use_tls=True)
- client = SMTP_SSL.return_value = Mock()
- mailer._send(msg)
- self.assertTrue(client.starttls.called)
- self.assertEqual(client.ehlo.call_count, 2)
- client.quit.assert_called_with()
- client.sendmail.assert_called_with(msg.sender, msg.to, str(msg))
- mailer = Mailer(use_ssl=True, use_tls=True, user='foo',
- password='bar')
- mailer._send(msg)
- client.login.assert_called_with('foo', 'bar')
- @patch('smtplib.SMTP')
- def test_send(self, SMTP):
- client = SMTP.return_value = Mock()
- mailer = Mailer(use_ssl=False, use_tls=False)
- mailer._send(msg)
- client.sendmail.assert_called_with(msg.sender, msg.to, str(msg))
- client.quit.side_effect = SSLError()
- mailer._send(msg)
- client.close.assert_called_with()
- class test_ErrorMail(Case):
- def setUp(self):
- self.task = Mock(name='task')
- self.mailer = ErrorMail(
- self.task, subject='foo{foo} ', body='bar{bar} ',
- )
- def test_should_send(self):
- self.assertTrue(self.mailer.should_send(Mock(), Mock()))
- def test_format_subject(self):
- self.assertEqual(
- self.mailer.format_subject({'foo': 'FOO'}),
- 'fooFOO',
- )
- def test_format_body(self):
- self.assertEqual(
- self.mailer.format_body({'bar': 'BAR'}),
- 'barBAR',
- )
- def test_send(self):
- self.mailer.send({'foo': 'FOO', 'bar': 'BAR'}, KeyError())
- self.task.app.mail_admins.assert_called_with(
- 'fooFOO', 'barBAR', fail_silently=True,
- )
|