fix: add is_enabled()
method for email handler, to check per type
also add some more descriptive errors when email template not found, body empty
This commit is contained in:
parent
089d9d7ec6
commit
902412322e
3 changed files with 152 additions and 21 deletions
|
@ -280,6 +280,22 @@ class TestEmailHandler(TestCase):
|
|||
body = handler.get_auto_html_body('test_foo')
|
||||
self.assertEqual(body, '<p>hello from foo html template</p>\n')
|
||||
|
||||
def test_is_enabled(self):
|
||||
handler = self.make_handler()
|
||||
|
||||
# enabled by default
|
||||
self.assertTrue(handler.is_enabled('default'))
|
||||
self.assertTrue(handler.is_enabled('foo'))
|
||||
|
||||
# specific type disabled
|
||||
self.config.setdefault('wutta.email.foo.enabled', 'false')
|
||||
self.assertFalse(handler.is_enabled('foo'))
|
||||
|
||||
# default is disabled
|
||||
self.assertTrue(handler.is_enabled('bar'))
|
||||
self.config.setdefault('wutta.email.default.enabled', 'false')
|
||||
self.assertFalse(handler.is_enabled('bar'))
|
||||
|
||||
def test_deliver_message(self):
|
||||
handler = self.make_handler()
|
||||
|
||||
|
@ -387,24 +403,56 @@ class TestEmailHandler(TestCase):
|
|||
self.assertTrue(handler.sending_is_enabled())
|
||||
|
||||
def test_send_email(self):
|
||||
with patch.object(mod.EmailHandler, 'deliver_message') as deliver_message:
|
||||
handler = self.make_handler()
|
||||
handler = self.make_handler()
|
||||
with patch.object(handler, 'deliver_message') as deliver_message:
|
||||
|
||||
# deliver_message() is called
|
||||
handler.send_email('foo', sender='bob@example.com', to='sally@example.com',
|
||||
txt_body='hello world')
|
||||
deliver_message.assert_called_once()
|
||||
# specify message w/ no body
|
||||
msg = handler.make_message()
|
||||
self.assertRaises(ValueError, handler.send_email, message=msg)
|
||||
self.assertFalse(deliver_message.called)
|
||||
|
||||
# make_auto_message() called only if needed
|
||||
with patch.object(handler, 'make_auto_message') as make_auto_message:
|
||||
# again, but also specify key
|
||||
msg = handler.make_message()
|
||||
self.assertRaises(ValueError, handler.send_email, 'foo', message=msg)
|
||||
self.assertFalse(deliver_message.called)
|
||||
|
||||
msg = handler.make_message()
|
||||
handler.send_email(message=msg)
|
||||
make_auto_message.assert_not_called()
|
||||
# specify complete message
|
||||
deliver_message.reset_mock()
|
||||
msg = handler.make_message(txt_body="hello world")
|
||||
handler.send_email(message=msg)
|
||||
deliver_message.assert_called_once_with(msg, recips=None)
|
||||
|
||||
handler.send_email('foo', sender='bob@example.com', to='sally@example.com',
|
||||
txt_body='hello world')
|
||||
make_auto_message.assert_called_once_with('foo', {},
|
||||
sender='bob@example.com',
|
||||
to='sally@example.com',
|
||||
txt_body='hello world')
|
||||
# again, but also specify key
|
||||
deliver_message.reset_mock()
|
||||
msg = handler.make_message(txt_body="hello world")
|
||||
handler.send_email('foo', message=msg)
|
||||
deliver_message.assert_called_once_with(msg, recips=None)
|
||||
|
||||
# no key, no message
|
||||
deliver_message.reset_mock()
|
||||
self.assertRaises(ValueError, handler.send_email)
|
||||
|
||||
# auto-create message w/ no template
|
||||
deliver_message.reset_mock()
|
||||
self.assertRaises(RuntimeError, handler.send_email, 'foo', sender='foo@example.com')
|
||||
self.assertFalse(deliver_message.called)
|
||||
|
||||
# auto create w/ body
|
||||
deliver_message.reset_mock()
|
||||
handler.send_email('foo', sender='foo@example.com', txt_body="hello world")
|
||||
self.assertTrue(deliver_message.called)
|
||||
|
||||
# type is disabled
|
||||
deliver_message.reset_mock()
|
||||
self.config.setdefault('wutta.email.foo.enabled', False)
|
||||
handler.send_email('foo', sender='foo@example.com', txt_body="hello world")
|
||||
self.assertFalse(deliver_message.called)
|
||||
|
||||
# default is disabled
|
||||
deliver_message.reset_mock()
|
||||
handler.send_email('bar', sender='bar@example.com', txt_body="hello world")
|
||||
self.assertTrue(deliver_message.called)
|
||||
deliver_message.reset_mock()
|
||||
self.config.setdefault('wutta.email.default.enabled', False)
|
||||
handler.send_email('bar', sender='bar@example.com', txt_body="hello world")
|
||||
self.assertFalse(deliver_message.called)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue