Changed how the mail utilities handle lists in their override and extra arguments. Added a test for send_mail_preformatted exercising override and extra. Commit ready for merge.
- Legacy-Id: 15153
This commit is contained in:
parent
6b779e9d4c
commit
25e9893a13
|
@ -302,7 +302,10 @@ def parse_preformatted(preformatted, extra={}, override={}):
|
|||
for k, v in override.iteritems():
|
||||
if k in msg:
|
||||
del msg[k]
|
||||
msg[k] = v
|
||||
if isinstance(v, list):
|
||||
msg[k] = ', '.join(v)
|
||||
else:
|
||||
msg[k] = v
|
||||
|
||||
headers = copy.copy(msg)
|
||||
for key in ['To', 'From', 'Subject', 'Bcc']:
|
||||
|
@ -310,7 +313,10 @@ def parse_preformatted(preformatted, extra={}, override={}):
|
|||
for k, v in extra.iteritems():
|
||||
if k in headers:
|
||||
del headers[k]
|
||||
headers[k] = v
|
||||
if isinstance(v, list):
|
||||
headers[k] = ', '.join(v)
|
||||
else:
|
||||
headers[k] = v
|
||||
|
||||
bcc = msg['Bcc']
|
||||
del msg['Bcc']
|
||||
|
|
|
@ -29,7 +29,7 @@ import debug # pyflakes:ignore
|
|||
from ietf.group.models import Group
|
||||
from ietf.submit.tests import submission_file
|
||||
from ietf.utils.draft import Draft, getmeta
|
||||
from ietf.utils.mail import send_mail_text, send_mail_mime, outbox
|
||||
from ietf.utils.mail import send_mail_preformatted, send_mail_text, send_mail_mime, outbox
|
||||
from ietf.utils.management.commands import pyflakes
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.test_runner import get_template_paths, set_coverage_checking
|
||||
|
@ -54,6 +54,66 @@ class PyFlakesTestCase(TestCase):
|
|||
warnings = pyflakes.checkPaths([path], verbosity=0)
|
||||
self.assertEqual([], [str(w) for w in warnings])
|
||||
|
||||
class SendingMail(TestCase):
|
||||
|
||||
def test_send_mail_preformatted(self):
|
||||
msg = """To: to1@example.com, to2@example.com
|
||||
From: from1@example.com, from2@example.com
|
||||
Cc: cc1@example.com, cc2@example.com
|
||||
Bcc: bcc1@example.com, bcc2@example.com
|
||||
Subject: subject
|
||||
|
||||
body
|
||||
"""
|
||||
send_mail_preformatted(None, msg, {}, {})
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<to1@example.com>, <to2@example.com>')
|
||||
self.assertEqual(recv['From'], 'from1@example.com, from2@example.com')
|
||||
self.assertEqual(recv['Cc'], 'cc1@example.com, cc2@example.com')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'subject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
override = {
|
||||
'To': 'oto1@example.net, oto2@example.net',
|
||||
'From': 'ofrom1@example.net, ofrom2@example.net',
|
||||
'Cc': 'occ1@example.net, occ2@example.net',
|
||||
'Subject': 'osubject',
|
||||
}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertEqual(recv['From'], 'ofrom1@example.net, ofrom2@example.net')
|
||||
self.assertEqual(recv['Cc'], 'occ1@example.net, occ2@example.net')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'osubject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
override = {
|
||||
'To': ['<oto1@example.net>', 'oto2@example.net'],
|
||||
'From': ['<ofrom1@example.net>', 'ofrom2@example.net'],
|
||||
'Cc': ['<occ1@example.net>', 'occ2@example.net'],
|
||||
'Subject': 'osubject',
|
||||
}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra={}, override=override)
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['To'], '<oto1@example.net>, <oto2@example.net>')
|
||||
self.assertEqual(recv['From'], '<ofrom1@example.net>, ofrom2@example.net')
|
||||
self.assertEqual(recv['Cc'], '<occ1@example.net>, occ2@example.net')
|
||||
self.assertEqual(recv['Bcc'], None)
|
||||
self.assertEqual(recv['Subject'], 'osubject')
|
||||
self.assertEqual(recv.get_payload(), 'body\n')
|
||||
|
||||
extra = {'Fuzz': 'bucket'}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra=extra, override={})
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['Fuzz'], 'bucket')
|
||||
|
||||
extra = {'Fuzz': ['bucket','monger']}
|
||||
send_mail_preformatted(request=None, preformatted=msg, extra=extra, override={})
|
||||
recv = outbox[-1]
|
||||
self.assertEqual(recv['Fuzz'], 'bucket, monger')
|
||||
|
||||
class TestSMTPServer(TestCase):
|
||||
|
||||
def test_address_rejected(self):
|
||||
|
|
Loading…
Reference in a new issue