summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorAlexandre Pretto Nunes <anunes@thoughtworks.com>2014-11-27 17:37:14 -0200
committerAlexandre Pretto Nunes <anunes@thoughtworks.com>2014-12-03 15:52:05 -0200
commit9e53c0ddcdd5cd74cda0e9cb6cb05183adbe579c (patch)
tree63b3ee451a871e87f38a1d6975dced273390cde5 /service
parent56565e49ed72f88e6dd0d54acdbcb3cfe4d1b95b (diff)
#135 Have the service respond the email details with who should be on to: and cc: when replying
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/adapter/mail.py21
-rw-r--r--service/test/unit/adapter/mail_test.py31
-rw-r--r--service/test/unit/controllers/mails_controller_test.py1
3 files changed, 31 insertions, 22 deletions
diff --git a/service/pixelated/adapter/mail.py b/service/pixelated/adapter/mail.py
index 092b4970..a5f0d5d2 100644
--- a/service/pixelated/adapter/mail.py
+++ b/service/pixelated/adapter/mail.py
@@ -214,7 +214,11 @@ class PixelatedMail(Mail):
@property
def headers(self):
- _headers = {}
+ _headers = {
+ 'To': [],
+ 'Cc': [],
+ 'Bcc': []
+ }
hdoc_headers = self.hdoc.content['headers']
for header in ['To', 'Cc', 'Bcc']:
@@ -320,10 +324,13 @@ class PixelatedMail(Mail):
def as_dict(self):
dict_mail = super(PixelatedMail, self).as_dict()
- recipients = dict_mail['header']['to'][0]
- for recipient in recipients:
- if recipient == InputMail.FROM_EMAIL_ADDRESS:
- recipients.remove(recipient)
- dict_mail['header']['to'][0] = recipients
- dict_mail['header']['subject'] = 'Re: %s' % dict_mail['header']['subject']
+ dict_mail['replying'] = {'single': None, 'all': {'to-field': [], 'cc-field': []}}
+
+ recipients = [recipient for recipient in self.headers['To'] if recipient != InputMail.FROM_EMAIL_ADDRESS]
+ recipients.append(self.headers['From'])
+ ccs = [cc for cc in self.headers['Cc'] if cc != InputMail.FROM_EMAIL_ADDRESS]
+
+ dict_mail['replying']['single'] = self.headers['From']
+ dict_mail['replying']['all']['to-field'] = recipients
+ dict_mail['replying']['all']['cc-field'] = ccs
return dict_mail
diff --git a/service/test/unit/adapter/mail_test.py b/service/test/unit/adapter/mail_test.py
index cf821035..4cc29287 100644
--- a/service/test/unit/adapter/mail_test.py
+++ b/service/test/unit/adapter/mail_test.py
@@ -71,7 +71,10 @@ class TestPixelatedMail(unittest.TestCase):
def test_as_dict(self):
fdoc, hdoc, bdoc = test_helper.leap_mail(flags=['\\Recent'])
hdoc.content['headers']['Subject'] = 'The subject'
- hdoc.content['headers']['From'] = 'me@pixelated.org'
+ hdoc.content['headers']['From'] = 'someone@pixelated.org'
+ hdoc.content['headers']['To'] = 'me@pixelated.org'
+
+ InputMail.FROM_EMAIL_ADDRESS = 'me@pixelated.org'
mail = PixelatedMail.from_soledad(fdoc, hdoc, bdoc, soledad_querier=self.querier)
@@ -80,16 +83,25 @@ class TestPixelatedMail(unittest.TestCase):
self.assertEquals(_dict, {'body': 'body',
'header': {
'date': dateparser.parse(hdoc.content['date']).isoformat(),
- 'from': 'me@pixelated.org',
- 'subject': 'The subject'
+ 'from': 'someone@pixelated.org',
+ 'subject': 'The subject',
+ 'to': ['me@pixelated.org'],
+ 'cc': [],
+ 'bcc': []
},
'ident': 'chash',
'mailbox': 'inbox',
'security_casing': {'imprints': [], 'locks': []},
'status': ['recent'],
'tags': [],
- 'attachments': []
- })
+ 'attachments': [],
+ 'replying': {
+ 'single': 'someone@pixelated.org',
+ 'all': {
+ 'to-field': ['someone@pixelated.org'],
+ 'cc-field': []
+ }
+ }})
def test_alternatives_body(self):
parts = {'alternatives': [], 'attachments': []}
@@ -125,15 +137,6 @@ class TestPixelatedMail(unittest.TestCase):
self.assertNotIn('\n', address)
self.assertNotIn(',', address)
self.assertEquals(4, len(mail.headers[header_label]))
- def test_to_reply_template_removes_user_from_to(self):
- InputMail.FROM_EMAIL_ADDRESS = 'user@pixelated.org'
- fdoc, hdoc, bdoc = test_helper.leap_mail(flags=['\\Recent'])
- mail = PixelatedMail.from_soledad(fdoc, hdoc, bdoc, soledad_querier=self.querier)
- hdoc.content['headers']['To'] = ['me@pixelated.org', 'user@pixelated.org']
-
- template = mail.to_reply_template()
-
- self.assertFalse('user@pixelated.org' in template['header']['to'][0])
def test_content_type_is_read_from_headers_for_plain_mail_when_converted_to_raw(self):
fdoc, hdoc, bdoc = test_helper.leap_mail(flags=['\\Recent'], body=u'some umlaut \xc3', extra_headers={'Content-Type': 'text/plain; charset=ISO-8859-1'})
diff --git a/service/test/unit/controllers/mails_controller_test.py b/service/test/unit/controllers/mails_controller_test.py
index c5234039..3e28e6b0 100644
--- a/service/test/unit/controllers/mails_controller_test.py
+++ b/service/test/unit/controllers/mails_controller_test.py
@@ -122,7 +122,6 @@ class TestMailsController(unittest.TestCase):
def _successfuly_send_mail(self, ident, mail):
sent_mail = mock()
- sent_mail.mailbox_name = 'TRASH'
sent_mail.as_dict = lambda: self.input_mail.json
return sent_mail