summaryrefslogtreecommitdiff
path: root/service/test
diff options
context:
space:
mode:
authorPatrick Maia <pmaia@thoughtworks.com>2015-02-13 18:05:17 -0300
committerPatrick Maia <pmaia@thoughtworks.com>2015-02-20 11:15:11 -0300
commitbb723e2cd21339f82c63ede3151d33022c0f029f (patch)
treeadb990b3ff66a56dce1f39147fe61cabdab567b8 /service/test
parent6f253b607f7211c1d63973c1f135e1230491d6ca (diff)
Issue #174 - recognizes bounced mails
Diffstat (limited to 'service/test')
-rw-r--r--service/test/unit/adapter/test_mail.py17
-rw-r--r--service/test/unit/fixtures/bounced_mail_hdoc.json218
2 files changed, 235 insertions, 0 deletions
diff --git a/service/test/unit/adapter/test_mail.py b/service/test/unit/adapter/test_mail.py
index be7b731d..72bb6d6d 100644
--- a/service/test/unit/adapter/test_mail.py
+++ b/service/test/unit/adapter/test_mail.py
@@ -23,6 +23,8 @@ import dateutil.parser as dateparser
import base64
from leap.mail.imap.fields import fields
from datetime import datetime
+import os
+import json
class TestPixelatedMail(unittest.TestCase):
@@ -209,6 +211,21 @@ class TestPixelatedMail(unittest.TestCase):
self.assertEquals(body, mail.text_plain_body)
+ def test_bounced_mails_are_recognized(self):
+ bounced_mail_hdoc = os.path.join(os.path.dirname(__file__), '..', 'fixtures', 'bounced_mail_hdoc.json')
+ with open(bounced_mail_hdoc) as f:
+ hdoc = json.loads(f.read())
+
+ bounced_leap_mail = test_helper.leap_mail()
+ bounced_leap_mail[1].content = hdoc
+ bounced_mail = PixelatedMail.from_soledad(*bounced_leap_mail, soledad_querier=self.querier)
+
+ not_bounced_leap_mail = test_helper.leap_mail()
+ not_bounced_mail = PixelatedMail.from_soledad(*not_bounced_leap_mail, soledad_querier=self.querier)
+
+ self.assertTrue(bounced_mail.bounced)
+ self.assertFalse(not_bounced_mail.bounced)
+
def _create_bdoc(self, raw):
class FakeBDoc:
def __init__(self, raw):
diff --git a/service/test/unit/fixtures/bounced_mail_hdoc.json b/service/test/unit/fixtures/bounced_mail_hdoc.json
new file mode 100644
index 00000000..5a0f9700
--- /dev/null
+++ b/service/test/unit/fixtures/bounced_mail_hdoc.json
@@ -0,0 +1,218 @@
+{
+ "body": "3583150D422268B15A27553279767CD26D7AC20937E8BDA8DC55BA53CFF0E9B2",
+ "chash": "E374570706F4263C533103893344FD6CBE62B9807ECCC082C159FECF60277656",
+ "date": "Wed, 11 Feb 2015 20:49:14 +0100 (CET)",
+ "headers": {
+ "Auto-Submitted": "auto-replied",
+ "Content-Type": "multipart/report; report-type=delivery-status;\n boundary=\"499F57FF7C.1423684154/domain.org\"",
+ "Date": "Wed, 11 Feb 2015 20:49:14 +0100 (CET)",
+ "Delivered-To": "412cab846cd0d6327f4505e9c4112c64@domain.org",
+ "From": "MAILER-DAEMON@domain.org (Mail Delivery System)",
+ "MIME-Version": "1.0",
+ "Message-Id": "<20150211194914.12CB3804C7@domain.org>",
+ "Received": "by domain.org (Postfix)\n id 12CB3804C7; Wed, 11 Feb 2015 20:49:14 +0100 (CET)",
+ "Return-Path": "<>",
+ "Subject": "Undelivered Mail Returned to Sender",
+ "To": "cuzcuz2@domain.org",
+ "X-Leap-Provenance": "Wed, 11 Feb 2015 19:49:14 -0000; pubkey=\"E2F104EE8B01F675\"",
+ "X-Leap-Signature": "could not verify",
+ "X-Original-To": "cuzcuz2@domain.org"
+ },
+ "msgid": null,
+ "multi": true,
+ "part_map": {
+ "1": {
+ "ctype": "text/plain",
+ "headers": [
+ [
+ "Content-Description",
+ "Notification"
+ ],
+ [
+ "Content-Type",
+ "text/plain; charset=us-ascii"
+ ]
+ ],
+ "multi": false,
+ "parts": 1,
+ "phash": "3583150D422268B15A27553279767CD26D7AC20937E8BDA8DC55BA53CFF0E9B2",
+ "size": 896
+ },
+ "2": {
+ "ctype": "message/delivery-status",
+ "headers": [
+ [
+ "Content-Description",
+ "Delivery report"
+ ],
+ [
+ "Content-Type",
+ "message/delivery-status"
+ ]
+ ],
+ "multi": true,
+ "parts": 2,
+ "phash": null,
+ "size": 772
+ },
+ "3": {
+ "ctype": "text/plain",
+ "headers": [
+ [
+ "Reporting-MTA",
+ "dns; domain.org"
+ ],
+ [
+ "X-Postfix-Queue-ID",
+ "499F57FF7C"
+ ],
+ [
+ "X-Postfix-Sender",
+ "rfc822; cuzcuz2@domain.org"
+ ],
+ [
+ "Arrival-Date",
+ "Wed, 11 Feb 2015 20:49:10 +0100 (CET)"
+ ]
+ ],
+ "multi": false,
+ "part_map": {
+ "0": {
+ "ctype": "text/plain",
+ "headers": [
+ [
+ "Final-Recipient",
+ "rfc822; inexistentaccount@domain.com"
+ ],
+ [
+ "Original-Recipient",
+ "rfc822;inexistentaccount@domain.com"
+ ],
+ [
+ "Action",
+ "failed"
+ ],
+ [
+ "Status",
+ "5.1.1"
+ ],
+ [
+ "Remote-MTA",
+ "dns; ASPMX.L.DOMAIN.com"
+ ],
+ [
+ "Diagnostic-Code",
+ "smtp; 550-5.1.1 The email account that you tried to reach does\n not exist. Please try 550-5.1.1 double-checking the\n recipient's email\n address for typos or 550-5.1.1 unnecessary spaces."
+ ]
+ ],
+ "multi": false,
+ "parts": 1,
+ "phash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
+ "size": 497
+ },
+ "1": {
+ "ctype": "message/rfc822",
+ "headers": [
+ [
+ "Content-Description",
+ "Undelivered Message"
+ ],
+ [
+ "Content-Type",
+ "message/rfc822"
+ ]
+ ],
+ "multi": true,
+ "parts": 1,
+ "phash": null,
+ "size": 2397
+ },
+ "2": {
+ "headers": {
+ "Content-Type": "multipart/signed; protocol=\"application/pgp-signature\";\n micalg=\"pgp-sha512\"; boundary=\"===============5178971458699783746==\"",
+ "Date": "2015-02-11T16:48:54.245828-03:00",
+ "From": "cuzcuz2@domain.org",
+ "MIME-Version": "1.0",
+ "Message-Id": "<20150211194857.19888.1605637474.0@host>",
+ "OpenPGP": "id=E2F104EE8B01F675;\n url=\"https://domain.org/key/cuzcuz2\"; preference=\"signencrypt\"",
+ "Received": "from 0.3.9-1-gc1f9c92 (unknown [127.0.0.1])\n (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))\n (Client CN \"UNLIMITEDdbe63unx9tfxa286ol3che4vx\",\n Issuer \"LEAP_Example Root CA (client certificates only!)\" (verified OK))\n by domain.org (Postfix) with ESMTPS id 499F57FF7C\n for <inexistentaccount@domain.com>; Wed, 11 Feb 2015 20:49:10 +0100 (CET)",
+ "Return-Path": "<cuzcuz2@domain.org>",
+ "Subject": "volte",
+ "To": "inexistentaccount@domain.com"
+ },
+ "multi": true,
+ "part_map": {
+ "1": {
+ "ctype": "multipart/mixed",
+ "headers": [
+ [
+ "Received",
+ "by bitmask.local from 127.0.0.1 with ESMTP ;\n Wed, 11 Feb 2015 16:48:55 -0300"
+ ],
+ [
+ "Content-Type",
+ "multipart/mixed; boundary=\"===============4044974129166450777==\""
+ ],
+ [
+ "MIME-Version",
+ "1.0"
+ ]
+ ],
+ "multi": true,
+ "parts": 1,
+ "phash": null,
+ "size": 370
+ },
+ "2": {
+ "ctype": "text/plain",
+ "headers": [
+ [
+ "Content-Type",
+ "text/plain; charset=\"utf-8\""
+ ],
+ [
+ "MIME-Version",
+ "1.0"
+ ],
+ [
+ "Content-Transfer-Encoding",
+ "base64"
+ ]
+ ],
+ "multi": false,
+ "parts": 1,
+ "phash": "231B2728DE0EF4968B1183F0DD7FA9C963A90996E64B9B7A9AB6936F0B1EADB7",
+ "size": 100
+ }
+ }
+ },
+ "3": {
+ "ctype": "application/pgp-signature",
+ "headers": [
+ [
+ "Content-Type",
+ "application/pgp-signature; name=\"signature.asc\""
+ ],
+ [
+ "MIME-Version",
+ "1.0"
+ ],
+ [
+ "Content-Description",
+ "OpenPGP Digital Signature"
+ ]
+ ],
+ "multi": false,
+ "parts": 1,
+ "phash": "90A694453A671BA3144BA9147ACA4C4B41DF7E714377C584E802ED5469AB5365",
+ "size": 929
+ }
+ },
+ "parts": 1,
+ "phash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
+ "size": 200
+ }
+ },
+ "subject": "Undelivered Mail Returned to Sender",
+ "type": "head"
+}