diff options
author | Alexandre Pretto Nunes <anunes@thoughtworks.com> | 2014-11-27 17:37:14 -0200 |
---|---|---|
committer | Alexandre Pretto Nunes <anunes@thoughtworks.com> | 2014-12-03 15:52:05 -0200 |
commit | 9e53c0ddcdd5cd74cda0e9cb6cb05183adbe579c (patch) | |
tree | 63b3ee451a871e87f38a1d6975dced273390cde5 | |
parent | 56565e49ed72f88e6dd0d54acdbcb3cfe4d1b95b (diff) |
#135 Have the service respond the email details with who should be on to: and cc: when replying
-rw-r--r-- | service/pixelated/adapter/mail.py | 21 | ||||
-rw-r--r-- | service/test/unit/adapter/mail_test.py | 31 | ||||
-rw-r--r-- | service/test/unit/controllers/mails_controller_test.py | 1 |
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 |