Skip to content

Commit

Permalink
Fixups
Browse files Browse the repository at this point in the history
  • Loading branch information
allanlei committed Mar 6, 2013
1 parent 8bad556 commit 5c612f5
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 32 deletions.
12 changes: 3 additions & 9 deletions flask_email/backends/locmem.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
import flask_email as mail
from .base import BaseMail


outbox = []

class Mail(BaseMail):
"""A email backend for use during test sessions.
Expand All @@ -17,13 +14,10 @@ class Mail(BaseMail):
"""
def init_app(self, app, **kwargs):
super(Mail, self).init_app(app, **kwargs)

@property
def outbox(self):
return outbox
if not hasattr(mail, 'outbox'):
mail.outbox = []

def send_messages(self, messages):
"""Redirect messages to the dummy outbox"""
global outbox
outbox.extend(messages)
mail.outbox.extend(messages)
return len(messages)
37 changes: 19 additions & 18 deletions tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from __future__ import with_statement

from flask import Flask, current_app as app
import flask_email as mail
from flask.ext.email.backends.base import BaseMail
from flask.ext.email.backends.console import Mail as ConsoleMail
from flask.ext.email.backends.smtp import Mail as SMTPMail
Expand Down Expand Up @@ -56,11 +57,11 @@ def disable(self):
class CustomMail(BaseMail):
def __init__(self, *args, **kwargs):
super(CustomMail, self).__init__(*args, **kwargs)
self.outbox = []
self.test_outbox = []

def send_messages(self, email_messages):
# Messages are stored in a instance variable for testing.
self.outbox.extend(email_messages)
self.test_outbox.extend(email_messages)
return len(email_messages)


Expand All @@ -69,7 +70,6 @@ class FlaskTestCase(unittest.TestCase):
DEFAULT_FROM_EMAIL = '[email protected]'

def setUp(self):

self.app = Flask(__name__)
self.app.config.from_object(self)
self.assertTrue(self.app.testing)
Expand Down Expand Up @@ -99,10 +99,10 @@ def test_arbitrary_keyword(self):
def test_custom_backend(self):
"""Test custom backend defined in this suite."""
conn = get_connection('tests.CustomMail')
self.assertTrue(hasattr(conn, 'outbox'))
self.assertTrue(hasattr(conn, 'test_outbox'))
email = EmailMessage('Subject', 'Content', '[email protected]', ['[email protected]'], headers={'From': '[email protected]'})
conn.send_messages([email])
self.assertEqual(len(conn.outbox), 1)
self.assertEqual(len(conn.test_outbox), 1)

def test_backend_arg(self):
"""Test backend argument of get_connection()"""
Expand All @@ -123,35 +123,36 @@ def test_backend_arg(self):
MANAGERS=[('nobody', '[email protected]')])
def test_connection_arg(self):
"""Test connection argument to send_mail(), et. al."""
mail.outbox = []

# Send using non-default connection
connection = get_connection('tests.CustomMail')
send_mail('Subject', 'Content', '[email protected]', ['[email protected]'], connection=connection)
self.assertEqual(connection.outbox, [])
self.assertEqual(len(connection.outbox), 1)
self.assertEqual(connection.outbox[0].subject, 'Subject')
self.assertEqual(mail.outbox, [])
self.assertEqual(len(connection.test_outbox), 1)
self.assertEqual(connection.test_outbox[0].subject, 'Subject')

connection = get_connection('tests.CustomMail')
send_mass_mail([
('Subject1', 'Content1', '[email protected]', ['[email protected]']),
('Subject2', 'Content2', '[email protected]', ['[email protected]']),
], connection=connection)
self.assertEqual(connection.outbox, [])
self.assertEqual(len(connection.outbox), 2)
self.assertEqual(connection.outbox[0].subject, 'Subject1')
self.assertEqual(connection.outbox[1].subject, 'Subject2')
self.assertEqual(mail.outbox, [])
self.assertEqual(len(connection.test_outbox), 2)
self.assertEqual(connection.test_outbox[0].subject, 'Subject1')
self.assertEqual(connection.test_outbox[1].subject, 'Subject2')

connection = get_connection('tests.CustomMail')
mail_admins('Admin message', 'Content', connection=connection)
self.assertEqual(connection.outbox, [])
self.assertEqual(len(connection.outbox), 1)
self.assertEqual(connection.outbox[0].subject, '[Flask] Admin message')
self.assertEqual(mail.outbox, [])
self.assertEqual(len(connection.test_outbox), 1)
self.assertEqual(connection.test_outbox[0].subject, '[Flask] Admin message')

connection = get_connection('tests.CustomMail')
mail_managers('Manager message', 'Content', connection=connection)
self.assertEqual(connection.outbox, [])
self.assertEqual(len(connection.outbox), 1)
self.assertEqual(connection.outbox[0].subject, '[Flask] Manager message')
self.assertEqual(mail.outbox, [])
self.assertEqual(len(connection.test_outbox), 1)
self.assertEqual(connection.test_outbox[0].subject, '[Flask] Manager message')


class BaseEmailBackendTests(object):
Expand Down
12 changes: 8 additions & 4 deletions tests/locmem.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,23 @@

from flask import current_app as app
from flask.ext.email.backends.locmem import Mail
from flask.ext.email.backends import locmem
import flask_email as mail
from flask.ext.email.message import EmailMessage

from . import BaseEmailBackendTests, FlaskTestCase

class LocmemBackendTests(BaseEmailBackendTests, FlaskTestCase):
EMAIL_BACKEND = 'flask.ext.email.backends.locmem.Mail'

def setUp(self):
super(LocmemBackendTests, self).setUp()
self.flush_mailbox()

def get_mailbox_content(self):
return [m.message() for m in locmem.outbox]
return [m.message() for m in mail.outbox]

def flush_mailbox(self):
locmem.outbox = []
mail.outbox = []

def test_locmem_shared_messages(self):
"""
Expand All @@ -26,4 +30,4 @@ def test_locmem_shared_messages(self):
email = EmailMessage('Subject', 'Content', '[email protected]', ['[email protected]'], headers={'From': '[email protected]'})
connection.send_messages([email])
connection2.send_messages([email])
self.assertEqual(len(locmem.outbox), 2)
self.assertEqual(len(mail.outbox), 2)
2 changes: 1 addition & 1 deletion tests/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def test_encoding(self):
self.assertEqual(msg.message().get_payload(1).as_string(), 'Content-Type: text/html; charset="iso-8859-1"\nMIME-Version: 1.0\nContent-Transfer-Encoding: quoted-printable\n\n<p>Firstname S=FCrname is a <strong>great</strong> guy.</p>')

def test_attachments(self):
"""Regression test for #9367"""
"""Regression test for Django #9367"""
headers = {"Date": "Fri, 09 Nov 2001 01:08:47 -0000", "Message-ID": "foo"}
subject, from_email, to = 'hello', '[email protected]', '[email protected]'
text_content = 'This is an important message.'
Expand Down

0 comments on commit 5c612f5

Please sign in to comment.