diff options
| -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 | 
