summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-11-18 19:42:06 -0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-11-18 19:42:13 -0200
commitba583f83895cdf998ebee7c80ace26a40338c414 (patch)
tree1dcc49a98f77e8b44d1a1ded899fd286f2780ad9 /service
parent4f961b29b00f5ccde29d463b2ccb4a89d0783c38 (diff)
Fixing functional tests. Im not proud.
Diffstat (limited to 'service')
-rw-r--r--service/test/functional/features/environment.py19
-rw-r--r--service/test/functional/features/steps/data_setup.py2
-rw-r--r--service/test/support/integration_helper.py124
3 files changed, 74 insertions, 71 deletions
diff --git a/service/test/functional/features/environment.py b/service/test/functional/features/environment.py
index cb9e0876..5d481e25 100644
--- a/service/test/functional/features/environment.py
+++ b/service/test/functional/features/environment.py
@@ -17,25 +17,19 @@ import time
import multiprocessing
from selenium import webdriver
-from test.support.integration_helper import SoledadTestBase
-import pixelated.runserver
import logging
+from test.support.integration_helper import setup_test_app
+
+logging.disable('INFO')
import pixelated.controllers.features_controller
def before_all(context):
- context.soledad_test_base = SoledadTestBase()
- context.soledad_test_base.setup_soledad()
-
- context.mailboxes = context.soledad_test_base.mailboxes
- context.app = pixelated.runserver.app
- context.app.mail_service = context.soledad_test_base.mail_service
pixelated.controllers.features_controller.FeaturesController.DISABLED_FEATURES.append('autoRefresh')
- logging.disable('INFO')
+ setup_test_app(context)
- worker = lambda app, port: pixelated.runserver.app.run(host='localhost', port=4567,
- logFile=open('/tmp/behave-tests.log', 'w'))
- context._process = multiprocessing.Process(target=worker, args=(context.app, 4567))
+ worker = lambda: context.app.run(host='localhost', port=4567, logFile=open('/tmp/behave-tests.log', 'w'))
+ context._process = multiprocessing.Process(target=worker)
context._process.start()
# we must wait the server start listening
@@ -43,7 +37,6 @@ def before_all(context):
def after_all(context):
- context.soledad_test_base.teardown_soledad()
context._process.terminate()
diff --git a/service/test/functional/features/steps/data_setup.py b/service/test/functional/features/steps/data_setup.py
index 51c5f9b8..e3e9a389 100644
--- a/service/test/functional/features/steps/data_setup.py
+++ b/service/test/functional/features/steps/data_setup.py
@@ -19,4 +19,4 @@ from test.support.integration_helper import MailBuilder
@given('I have a mail in my inbox')
def add_mail_impl(context):
input_mail = MailBuilder().build_input_mail()
- context.soledad_test_base.add_mail_to_inbox(input_mail)
+ context.add_mail_to_inbox(input_mail)
diff --git a/service/test/support/integration_helper.py b/service/test/support/integration_helper.py
index 0008d33f..fd8ce75a 100644
--- a/service/test/support/integration_helper.py
+++ b/service/test/support/integration_helper.py
@@ -15,6 +15,7 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import shutil
+
from klein.resource import KleinResource
from leap.soledad.client import Soledad
from mockito import mock
@@ -33,8 +34,7 @@ from pixelated.controllers import *
import pixelated.config.app_factory as app_factory
from leap.mail.imap.account import SoledadBackedAccount
from klein.test_resource import requestMock, _render
-from nose.twistedtools import stop_reactor, threaded_reactor
-from twisted.internet.error import ReactorNotRestartable
+import unittest
soledad_test_folder = "soledad-test"
@@ -117,52 +117,80 @@ class MailBuilder:
return InputMail.from_dict(self.mail)
-import unittest
+def add_document_to_soledad(self, _dict):
+ self.soledad_querier.soledad.create_doc(_dict)
+
+
+def add_mail_to_inbox(self, input_mail):
+ mail = self.mailboxes.inbox().add(input_mail)
+ mail.update_tags(input_mail.tags)
+ self.search_engine.index_mail(mail)
+
+
+def add_multiple_to_mailbox(self, num, mailbox='', flags=[], tags=[]):
+ mails = []
+ for _ in range(num):
+ input_mail = MailBuilder().with_status(flags).with_tags(tags).build_input_mail()
+ mail = self.mailboxes._create_or_get(mailbox).add(input_mail)
+ mails.append(mail)
+ mail.update_tags(input_mail.tags)
+ self.search_engine.index_mail(mail)
+ return mails
+
+
+def setup_test_app(self):
+ from functools import partial
+ self.add_document_to_soledad = partial(add_document_to_soledad, self)
+ self.add_mail_to_inbox = partial(add_mail_to_inbox, self)
+ self.add_multiple_to_mailbox = partial(add_multiple_to_mailbox, self)
+
+ self.soledad = initialize_soledad(tempdir=soledad_test_folder)
+ self.mail_address = "test@pixelated.org"
+
+ # setup app
+ PixelatedMail.from_email_address = self.mail_address
+
+ SearchEngine.INDEX_FOLDER = soledad_test_folder + '/search_index'
+
+ self.app = pixelated.runserver.app
+
+ self.soledad_querier = SoledadQuerier(self.soledad)
+ self.soledad_querier.get_index_masterkey = lambda: '_yg2oG_5ELM8_-sQYcsxI37WesI0dOtZQXpwAqjvhR4='
+
+ self.account = SoledadBackedAccount('test', self.soledad, MagicMock())
+ self.mailboxes = Mailboxes(self.account, self.soledad_querier)
+ self.mail_sender = mock()
+ self.tag_service = TagService()
+ self.draft_service = DraftService(self.mailboxes)
+ self.mail_service = MailService(self.mailboxes, self.mail_sender, self.tag_service,
+ self.soledad_querier)
+ self.search_engine = SearchEngine(self.soledad_querier)
+ self.search_engine.index_mails(self.mail_service.all_mails())
+
+ features_controller = FeaturesController()
+ features_controller.DISABLED_FEATURES.append('autoReload')
+ home_controller = HomeController()
+ mails_controller = MailsController(mail_service=self.mail_service,
+ draft_service=self.draft_service,
+ search_engine=self.search_engine)
+ tags_controller = TagsController(search_engine=self.search_engine)
+ sync_info_controller = SyncInfoController()
+ attachments_controller = AttachmentsController(self.soledad_querier)
+
+ app_factory._setup_routes(self.app, home_controller, mails_controller, tags_controller,
+ features_controller, sync_info_controller, attachments_controller)
+ self.resource = KleinResource(self.app)
class SoledadTestBase(unittest.TestCase):
@classmethod
def setUpClass(cls):
+ from nose.twistedtools import threaded_reactor
threaded_reactor()
def setUp(self):
- self.soledad = initialize_soledad(tempdir=soledad_test_folder)
- self.mail_address = "test@pixelated.org"
-
- # setup app
- PixelatedMail.from_email_address = self.mail_address
-
- SearchEngine.INDEX_FOLDER = soledad_test_folder + '/search_index'
-
- self.app = pixelated.runserver.app
-
- self.soledad_querier = SoledadQuerier(self.soledad)
- self.soledad_querier.get_index_masterkey = lambda: '_yg2oG_5ELM8_-sQYcsxI37WesI0dOtZQXpwAqjvhR4='
-
- self.account = SoledadBackedAccount('test', self.soledad, MagicMock())
- self.mailboxes = Mailboxes(self.account, self.soledad_querier)
- self.mail_sender = mock()
- self.tag_service = TagService()
- self.draft_service = DraftService(self.mailboxes)
- self.mail_service = MailService(self.mailboxes, self.mail_sender, self.tag_service,
- self.soledad_querier)
- self.search_engine = SearchEngine(self.soledad_querier)
- self.search_engine.index_mails(self.mail_service.all_mails())
-
- features_controller = FeaturesController()
- features_controller.DISABLED_FEATURES.append('autoReload')
- home_controller = HomeController()
- mails_controller = MailsController(mail_service=self.mail_service,
- draft_service=self.draft_service,
- search_engine=self.search_engine)
- tags_controller = TagsController(search_engine=self.search_engine)
- sync_info_controller = SyncInfoController()
- attachments_controller = AttachmentsController(self.soledad_querier)
-
- app_factory._setup_routes(self.app, home_controller, mails_controller, tags_controller,
- features_controller, sync_info_controller, attachments_controller)
- self.resource = KleinResource(self.app)
+ setup_test_app(self)
def get_mails_by_tag(self, tag, page=1, window=100):
request = requestMock(path="/mails")
@@ -233,24 +261,6 @@ class SoledadTestBase(unittest.TestCase):
_render(self.resource, request)
return request
- def add_document_to_soledad(self, _dict):
- self.soledad_querier.soledad.create_doc(_dict)
-
- def add_mail_to_inbox(self, input_mail):
- mail = self.mailboxes.inbox().add(input_mail)
- mail.update_tags(input_mail.tags)
- self.search_engine.index_mail(mail)
-
- def add_multiple_to_mailbox(self, num, mailbox='', flags=[], tags=[]):
- mails = []
- for _ in range(num):
- input_mail = MailBuilder().with_status(flags).with_tags(tags).build_input_mail()
- mail = self.mailboxes._create_or_get(mailbox).add(input_mail)
- mails.append(mail)
- mail.update_tags(input_mail.tags)
- self.search_engine.index_mail(mail)
- return mails
-
class ResponseMail:
def __init__(self, mail_dict):