diff options
-rw-r--r-- | service/pixelated/adapter/mailstore/leap_mailstore.py | 7 | ||||
m--------- | service/src/leap.auth | 0 | ||||
m--------- | service/src/leap.common | 0 | ||||
m--------- | service/src/leap.keymanager | 0 | ||||
m--------- | service/src/leap.mail | 0 | ||||
m--------- | service/src/leap.soledad.client | 0 | ||||
m--------- | service/src/leap.soledad.common | 0 | ||||
m--------- | service/src/leap.soledad.server | 0 | ||||
-rw-r--r-- | service/src/pip-delete-this-directory.txt | 5 | ||||
-rw-r--r-- | service/test/integration/test_leap_mailstore.py | 14 |
10 files changed, 26 insertions, 0 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index 6cbbe10a..72a16dfa 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -29,6 +29,9 @@ from pixelated.support import log_time_deferred from pixelated.support.functional import to_unicode +MIME_PGP_KEY = 'application/pgp-keys' + + class AttachmentInfo(object): def __init__(self, ident, name, encoding=None, ctype='application/octet-stream', size=0): self.ident = ident @@ -322,10 +325,14 @@ class LeapMailStore(MailStore): mbox_uuid = message.get_wrapper().fdoc.mbox_uuid mbox_name = yield self._mailbox_name_from_uuid(mbox_uuid) attachments = self._extract_attachment_info_from(message) + attachments = self._filter_keys(attachments) mail = LeapMail(mail_id, mbox_name, message.get_wrapper().hdoc.headers, set(message.get_tags()), set(message.get_flags()), body=body, attachments=attachments) # TODO assert flags are passed on defer.returnValue(mail) + def _filter_keys(self, attachments): + return filter(lambda attachment: attachment.ctype != MIME_PGP_KEY, attachments) + @defer.inlineCallbacks def _raw_message_body(self, message): content_doc = (yield message.get_wrapper().get_body(self.soledad)) diff --git a/service/src/leap.auth b/service/src/leap.auth new file mode 160000 +Subproject 89cb3a5e36bf3f243b55148e58e48e1a91923d3 diff --git a/service/src/leap.common b/service/src/leap.common new file mode 160000 +Subproject eb65db3e4a7e0d5f42fb7269b98aed6fc59788b diff --git a/service/src/leap.keymanager b/service/src/leap.keymanager new file mode 160000 +Subproject f77d42a25b135e4d11546afde48c24e304ca62d diff --git a/service/src/leap.mail b/service/src/leap.mail new file mode 160000 +Subproject f303fd99f2f7ff59c24fe34094a91ac17e17649 diff --git a/service/src/leap.soledad.client b/service/src/leap.soledad.client new file mode 160000 +Subproject 2eb96f7f3cb35e48c87af1452749e413a59ffa6 diff --git a/service/src/leap.soledad.common b/service/src/leap.soledad.common new file mode 160000 +Subproject 2eb96f7f3cb35e48c87af1452749e413a59ffa6 diff --git a/service/src/leap.soledad.server b/service/src/leap.soledad.server new file mode 160000 +Subproject 2eb96f7f3cb35e48c87af1452749e413a59ffa6 diff --git a/service/src/pip-delete-this-directory.txt b/service/src/pip-delete-this-directory.txt new file mode 100644 index 00000000..c8883ea9 --- /dev/null +++ b/service/src/pip-delete-this-directory.txt @@ -0,0 +1,5 @@ +This file is placed here by pip to indicate the source was put +here by pip. + +Once this package is successfully installed this source code will be +deleted (unless you remove this file). diff --git a/service/test/integration/test_leap_mailstore.py b/service/test/integration/test_leap_mailstore.py index 885aa62b..f52d7c9c 100644 --- a/service/test/integration/test_leap_mailstore.py +++ b/service/test/integration/test_leap_mailstore.py @@ -50,6 +50,19 @@ class LeapMailStoreTest(SoledadTestBase): self.assertEqual(expected_mail_dict['header'], fetched_mail.as_dict()['header']) @defer.inlineCallbacks + def test_remove_key_from_attachments(self): + input_mail = MIMEMultipart() + input_mail.attach(MIMEText(u'a utf8 message', _charset='utf-8')) + attachment = MIMEApplication('pretend to be binary attachment data') + attachment.add_header('Content-Disposition', 'attachment', filename='pub.key') + attachment.replace_header('Content-Type', 'application/pgp-keys') + input_mail.attach(attachment) + + mail = yield self.mail_store.add_mail('INBOX', input_mail.as_string()) + fetched_mail = yield self.mail_store.get_mail(mail.ident, include_body=True) + self.assertEquals(fetched_mail.as_dict().get('attachments'), []) + + @defer.inlineCallbacks def test_round_trip_through_soledad_keeps_attachment(self): input_mail = MIMEMultipart() input_mail.attach(MIMEText(u'a utf8 message', _charset='utf-8')) @@ -59,6 +72,7 @@ class LeapMailStoreTest(SoledadTestBase): mail = yield self.mail_store.add_mail('INBOX', input_mail.as_string()) fetched_mail = yield self.mail_store.get_mail(mail.ident, include_body=True) + self.assertDictEqual(mail.as_dict(), fetched_mail.as_dict()) @defer.inlineCallbacks def test_all_mails(self): |