From 414f210a908427da10a90fb4c8c83d58e1496b26 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Wed, 22 Jul 2015 09:37:24 +0000 Subject: Fixed test_delete_mail integration test. --- service/pixelated/adapter/services/mail_service.py | 12 +++++++----- service/pixelated/adapter/services/mailboxes.py | 2 +- service/pixelated/resources/mail_resource.py | 11 +++++++++-- service/pixelated/resources/mails_resource.py | 14 ++++++++++++-- 4 files changed, 29 insertions(+), 10 deletions(-) (limited to 'service/pixelated') diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py index b66d7345..da1b1bea 100644 --- a/service/pixelated/adapter/services/mail_service.py +++ b/service/pixelated/adapter/services/mail_service.py @@ -100,19 +100,21 @@ class MailService(object): yield mail.mark_as_unread() self.search_engine.index_mail(mail) + @defer.inlineCallbacks def delete_mail(self, mail_id): - mail = self.mail(mail_id) + mail = yield self.mail(mail_id) if mail.mailbox_name == 'TRASH': - self.delete_permanent(mail_id) + yield self.delete_permanent(mail_id) else: - trashed_mail = self.mailboxes.move_to_trash(mail_id) + trashed_mail = yield self.mailboxes.move_to_trash(mail_id) self.search_engine.index_mail(trashed_mail) def recover_mail(self, mail_id): recovered_mail = self.mailboxes.move_to_inbox(mail_id) self.search_engine.index_mail(recovered_mail) + @defer.inlineCallbacks def delete_permanent(self, mail_id): - mail = self.mail(mail_id) + mail = yield self.mail(mail_id) self.search_engine.remove_from_index(mail_id) - self.querier.remove_mail(mail) + yield self.querier.remove_mail(mail) diff --git a/service/pixelated/adapter/services/mailboxes.py b/service/pixelated/adapter/services/mailboxes.py index 45dd9192..19176a32 100644 --- a/service/pixelated/adapter/services/mailboxes.py +++ b/service/pixelated/adapter/services/mailboxes.py @@ -77,7 +77,7 @@ class Mailboxes(object): @defer.inlineCallbacks def _move_to(self, mail_id, mailbox): mailbox = yield mailbox - mail = self.querier.mail(mail_id) + mail = yield self.querier.mail(mail_id) mail.set_mailbox(mailbox.mailbox_name) mail.save() defer.returnValue(mail) diff --git a/service/pixelated/resources/mail_resource.py b/service/pixelated/resources/mail_resource.py index f11862af..436842fb 100644 --- a/service/pixelated/resources/mail_resource.py +++ b/service/pixelated/resources/mail_resource.py @@ -2,6 +2,7 @@ import json from pixelated.resources import respond_json, respond_json_deferred from twisted.web.resource import Resource from twisted.web.server import NOT_DONE_YET +from twisted.python.log import err class MailTags(Resource): @@ -42,8 +43,14 @@ class Mail(Resource): return NOT_DONE_YET def render_DELETE(self, request): - self._mail_service.delete_mail(self._mail_id) - return respond_json(None, request) + def response_failed(failure): + err(failure, 'something failed') + request.finish() + + d = self._mail_service.delete_mail(self._mail_id) + d.addCallback(lambda _: respond_json_deferred(None, request)) + d.addErrback(response_failed) + return NOT_DONE_YET class MailResource(Resource): diff --git a/service/pixelated/resources/mails_resource.py b/service/pixelated/resources/mails_resource.py index 27232ffc..1056dcdb 100644 --- a/service/pixelated/resources/mails_resource.py +++ b/service/pixelated/resources/mails_resource.py @@ -6,6 +6,7 @@ from pixelated.resources import respond_json, respond_json_deferred from twisted.web.resource import Resource from twisted.web import server from twisted.internet import defer +from twisted.python.log import err from leap.common.events import ( register, catalog as events @@ -60,10 +61,19 @@ class MailsDeleteResource(Resource): self._mail_service = mail_service def render_POST(self, request): + def response_failed(failure): + err(failure, 'something failed') + request.finish() + idents = json.loads(request.content.read())['idents'] + deferreds = [] for ident in idents: - self._mail_service.delete_mail(ident) - return respond_json(None, request) + deferreds.append(self._mail_service.delete_mail(ident)) + + d = defer.gatherResults(deferreds, consumeErrors=True) + d.addCallback(lambda _: respond_json_deferred(None, request)) + d.addErrback(response_failed) + return NOT_DONE_YET class MailsRecoverResource(Resource): -- cgit v1.2.3