From 5f0df1ecb43ba0a3520047b49d50e840c9727afc Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Mon, 3 Aug 2015 17:49:25 +0200 Subject: Added common LeapMailStore to soledad test base. - provides instance to all integration tests --- service/test/support/integration/__init__.py | 1 + .../test/support/integration/soledad_test_base.py | 25 ++++++++++++++++++++- service/test/support/integration/util.py | 26 ++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 service/test/support/integration/util.py (limited to 'service/test/support/integration') diff --git a/service/test/support/integration/__init__.py b/service/test/support/integration/__init__.py index 8d0bbb7a..d590ae71 100644 --- a/service/test/support/integration/__init__.py +++ b/service/test/support/integration/__init__.py @@ -16,3 +16,4 @@ from .app_test_client import AppTestClient from .model import MailBuilder, ResponseMail from .soledad_test_base import SoledadTestBase +from .util import load_mail_from_file \ No newline at end of file diff --git a/service/test/support/integration/soledad_test_base.py b/service/test/support/integration/soledad_test_base.py index 5fed3a12..1e3e3094 100644 --- a/service/test/support/integration/soledad_test_base.py +++ b/service/test/support/integration/soledad_test_base.py @@ -13,7 +13,12 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . +from uuid import uuid4 +from leap.mail.adaptors.soledad import SoledadMailAdaptor +from leap.mail.mail import Message +from twisted.internet import defer from twisted.trial import unittest +from pixelated.adapter.mailstore import LeapMailStore from test.support.integration.app_test_client import AppTestClient from leap.common.events.flags import set_events_enabled @@ -23,10 +28,28 @@ class SoledadTestBase(unittest.TestCase, AppTestClient): DEFERRED_TIMEOUT = 120 DEFERRED_TIMEOUT_LONG = 300 + @defer.inlineCallbacks def setUp(self): set_events_enabled(False) - return self.start_client() + super(SoledadTestBase, self).setUp() + self.adaptor = SoledadMailAdaptor() + self.mbox_uuid = str(uuid4()) + yield self.start_client() + self.store = LeapMailStore(self.soledad) def tearDown(self): set_events_enabled(True) self.cleanup() + + @defer.inlineCallbacks + def _create_mail_in_soledad(self, mail): + message = self._convert_mail_to_leap_message(mail) + yield self.adaptor.initialize_store(self.soledad) + yield self.adaptor.create_msg(self.soledad, message) + + defer.returnValue(message.get_wrapper().mdoc.doc_id) + + def _convert_mail_to_leap_message(self, mail): + message = self.adaptor.get_msg_from_string(Message, mail.as_string()) + message.get_wrapper().set_mbox_uuid(self.mbox_uuid) + return message diff --git a/service/test/support/integration/util.py b/service/test/support/integration/util.py new file mode 100644 index 00000000..1d8ebbd2 --- /dev/null +++ b/service/test/support/integration/util.py @@ -0,0 +1,26 @@ +# +# Copyright (c) 2014 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see . +from email.parser import Parser +import os +import pkg_resources + + +def load_mail_from_file(mail_file): + mailset_dir = pkg_resources.resource_filename('test.unit.fixtures', 'mailset') + mail_file = os.path.join(mailset_dir, 'new', mail_file) + with open(mail_file) as f: + mail = Parser().parse(f) + return mail \ No newline at end of file -- cgit v1.2.3