From 92b0c42d82e8a73af971f06e816513c868a29db3 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Wed, 23 Nov 2016 12:31:02 +0100 Subject: [PATCH] tests: use new 'mailoutbox' fixture (#14046) --- tests/test_emailing.py | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/tests/test_emailing.py b/tests/test_emailing.py index 6b16644..f59fb16 100644 --- a/tests/test_emailing.py +++ b/tests/test_emailing.py @@ -44,15 +44,15 @@ def announces(): return announces -def test_emailing_with_no_subscriptions(app, categories, announces): +def test_emailing_with_no_subscriptions(app, categories, announces, mailoutbox): for announce in announces: broadcast = Broadcast.objects.get(announce=announce) broadcast.send() assert not broadcast.result - assert not mail.outbox + assert not len(mailoutbox) -def test_send_email(app, categories, announces): +def test_send_email(app, categories, announces, mailoutbox): for category in categories: uuid = uuid4() Subscription.objects.create(category=category, @@ -61,11 +61,11 @@ def test_send_email(app, categories, announces): broadcast = Broadcast.objects.get(announce=announce) broadcast.send() assert broadcast.result - assert mail.outbox + assert len(mailoutbox) -def test_check_inline_css(app, categories, announces): - for announce in announces: +def test_check_inline_css(app, categories, announces, mailoutbox): + for i, announce in enumerate(announces): announce.text = '' + announce.text announce.save() uuid = uuid4() @@ -74,17 +74,16 @@ def test_check_inline_css(app, categories, announces): broadcast = Broadcast.objects.get(announce=announce) broadcast.send() assert broadcast.result - assert mail.outbox - assert 'h2 style="color:#F00"' in mail.outbox[0].html - mail.outbox = [] + assert len(mailoutbox) + assert 'h2 style="color:#F00"' in mailoutbox[i].html @mock.patch('emails.utils.requests.get') -def test_check_inline_images(mocked_get, app, categories, announces): +def test_check_inline_images(mocked_get, app, categories, announces, mailoutbox): storage = DefaultStorage() media_path = os.path.join(os.path.dirname(__file__), 'media') image_name = 'logo.png' image_name = storage.save(image_name, file(os.path.join(media_path, image_name))) - for announce in announces: + for i, announce in enumerate(announces): img_src = "/media/%s" % image_name announce.text = announce.text + '' % img_src announce.save() @@ -97,39 +96,37 @@ def test_check_inline_images(mocked_get, app, categories, announces): content=storage.open(image_name).read()) broadcast.send() assert broadcast.result - assert mail.outbox - attachments = [a['filename'] for a in mail.outbox[0].attachments.as_dict()] + assert len(mailoutbox) + attachments = [a['filename'] for a in mailoutbox[i].attachments.as_dict()] assert image_name in attachments - assert 'cid:%s' % image_name in mail.outbox[0].html_body - assert 'cid:%s' % image_name in mail.outbox[0].text_body - mail.outbox = [] + assert 'cid:%s' % image_name in mailoutbox[i].html_body + assert 'cid:%s' % image_name in mailoutbox[i].text_body storage.delete(image_name) -def test_unsubscription_link(app, categories, announces): +def test_unsubscription_link(app, categories, announces, mailoutbox): unsubscription_link_sentinel = '' for category in categories: uuid = uuid4() scheme = 'mailto:' uri = scheme + '%s@example.net' % uuid Subscription.objects.create(category=category, identifier=uri, uuid=str(uuid)) - for announce in announces: + for i, announce in enumerate(announces): if announce.category != category: continue broadcast = Broadcast.objects.get(announce=announce) broadcast.send() assert broadcast.result - assert mail.outbox + assert len(mailoutbox) - signature = urllib.unquote(re.findall('/unsubscribe/(.*)"', mail.outbox[0].html)[0]) + signature = urllib.unquote(re.findall('/unsubscribe/(.*)"', mailoutbox[i].html)[0]) unsubscription_link = reverse('unsubscribe', kwargs={'unsubscription_token': signature}) assert signing.loads(signature) == { 'category': announce.category.pk, 'identifier': uri} - assert mail.outbox[0].subject == announce.title - assert unsubscription_link in mail.outbox[0].html - assert unsubscription_link in mail.outbox[0].text + assert mailoutbox[i].subject == announce.title + assert unsubscription_link in mailoutbox[i].html + assert unsubscription_link in mailoutbox[i].text assert unsubscription_link_sentinel != unsubscription_link - mail.outbox = [] # make sure the uri schema is not in the page resp = app.get(unsubscription_link) assert scheme not in resp.content -- 2.10.2