diff options
Diffstat (limited to 'service')
-rw-r--r-- | service/pixelated/adapter/mailstore/leap_mailstore.py | 4 | ||||
-rw-r--r-- | service/test/integration/test_leap_mailstore.py | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index 42e065ac..4348347e 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -289,7 +289,9 @@ class LeapMailStore(MailStore): @defer.inlineCallbacks def delete_mail(self, mail_id): message = yield self._fetch_msg_from_soledad(mail_id) - yield message.get_wrapper().delete(self.soledad) + message_wrapper = message.get_wrapper() + if message_wrapper.mdoc.doc_id: + yield message_wrapper.delete(self.soledad) @defer.inlineCallbacks def get_mailbox_mail_ids(self, mailbox_name): diff --git a/service/test/integration/test_leap_mailstore.py b/service/test/integration/test_leap_mailstore.py index 9a7f94ae..f72a99be 100644 --- a/service/test/integration/test_leap_mailstore.py +++ b/service/test/integration/test_leap_mailstore.py @@ -190,3 +190,13 @@ class LeapMailStoreTest(SoledadTestBase): self.assertEqual(replying['single'], 'me@pixelated.org') self.assertEqual(replying['all']['to-field'], [u'addr1@pixelated.org', u'me@pixelated.org']) self.assertEqual(replying['all']['cc-field'], []) + + @defer.inlineCallbacks + def test_deleting_a_deleted_mail_doesnt_raise_errors(self): + InputMail.FROM_EMAIL_ADDRESS = 'me@pixelated.org' + mail = load_mail_from_file('mbox00000000') + yield self.mail_store.add_mailbox('INBOX') + mail = yield self.mail_store.add_mail('INBOX', mail.as_string()) + + yield self.mail_store.delete_mail(mail.ident) + yield self.mail_store.delete_mail(mail.ident) |