summaryrefslogtreecommitdiff
path: root/service/test
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-10-09 12:03:31 +0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-10-09 12:03:38 +0200
commit0bad14f4b0e6dd5128660d94a436463cbe7dc720 (patch)
tree1c6170b1e29a09360378253da3fa3aeca9433641 /service/test
parente605929f9be56f01795fdc904d98cbe3f91984e3 (diff)
Changing tests folder structure
Diffstat (limited to 'service/test')
-rw-r--r--service/test/integration/__init__.py15
-rw-r--r--service/test/integration/delete_mail_test.py40
-rw-r--r--service/test/integration/drafts_test.py62
-rw-r--r--service/test/integration/mark_as_read_test.py38
-rw-r--r--service/test/integration/tags_test.py52
-rw-r--r--service/test/support/__init__.py15
-rw-r--r--service/test/support/integration_helper.py177
-rw-r--r--service/test/support/test_helper.py (renamed from service/test/adapter/test_helper.py)0
-rw-r--r--service/test/unit/__init__.py15
-rw-r--r--service/test/unit/adapter/__init__.py (renamed from service/test/adapter/__init__.py)0
-rw-r--r--service/test/unit/adapter/mail_service_test.py (renamed from service/test/adapter/mail_service_test.py)0
-rw-r--r--service/test/unit/adapter/pixelated_mail_sender_test.py (renamed from service/test/adapter/pixelated_mail_sender_test.py)3
-rw-r--r--service/test/unit/adapter/pixelated_mail_test.py (renamed from service/test/adapter/pixelated_mail_test.py)4
-rw-r--r--service/test/unit/adapter/pixelated_mailbox_test.py (renamed from service/test/adapter/pixelated_mailbox_test.py)2
-rw-r--r--service/test/unit/adapter/pixelated_mailboxes_test.py (renamed from service/test/adapter/pixelated_mailboxes_test.py)5
-rw-r--r--service/test/unit/adapter/tag_index_test.py (renamed from service/test/adapter/tag_index_test.py)0
-rw-r--r--service/test/unit/adapter/test_status.py (renamed from service/test/adapter/test_status.py)1
-rw-r--r--service/test/unit/adapter/test_tag.py (renamed from service/test/adapter/test_tag.py)0
-rw-r--r--service/test/unit/adapter/test_tag_service.py (renamed from service/test/adapter/test_tag_service.py)3
-rw-r--r--service/test/unit/bitmask_libraries/__init__.py (renamed from service/test/bitmask_libraries/__init__.py)0
-rw-r--r--service/test/unit/bitmask_libraries/abstract_leap_test.py (renamed from service/test/bitmask_libraries/abstract_leap_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/leap_srp_test.py (renamed from service/test/bitmask_libraries/leap_srp_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/nicknym_test.py (renamed from service/test/bitmask_libraries/nicknym_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/provider_test.py (renamed from service/test/bitmask_libraries/provider_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/session_test.py (renamed from service/test/bitmask_libraries/session_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/smtp_test.py (renamed from service/test/bitmask_libraries/smtp_test.py)0
-rw-r--r--service/test/unit/bitmask_libraries/soledad_test.py (renamed from service/test/bitmask_libraries/soledad_test.py)0
-rw-r--r--service/test/unit/search/test_search_query.py (renamed from service/test/search/test_search_query.py)0
-rw-r--r--service/test/unit/user_agent_test.py (renamed from service/test/user_agent_test.py)9
29 files changed, 427 insertions, 14 deletions
diff --git a/service/test/integration/__init__.py b/service/test/integration/__init__.py
new file mode 100644
index 00000000..2756a319
--- /dev/null
+++ b/service/test/integration/__init__.py
@@ -0,0 +1,15 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
diff --git a/service/test/integration/delete_mail_test.py b/service/test/integration/delete_mail_test.py
new file mode 100644
index 00000000..3d4a6af7
--- /dev/null
+++ b/service/test/integration/delete_mail_test.py
@@ -0,0 +1,40 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
+import unittest
+from test.support.integration_helper import MailBuilder, SoledadTestBase
+
+
+class DeleteMailTest(unittest.TestCase, SoledadTestBase):
+
+ def setUp(self):
+ self.setup_soledad()
+
+ def tearDown(self):
+ self.teardown_soledad()
+
+ def test_move_mail_to_trash_when_deleting(self):
+ mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
+ self.pixelated_mailboxes.inbox().add(mail)
+
+ inbox_mails = self.get_mails_by_tag('inbox')
+ self.assertEquals(1, len(inbox_mails))
+
+ self.delete_mail(mail.ident)
+
+ inbox_mails = self.get_mails_by_tag('inbox')
+ self.assertEquals(0, len(inbox_mails))
+ trash_mails = self.get_mails_by_tag('trash')
+ self.assertEquals(1, len(trash_mails))
diff --git a/service/test/integration/drafts_test.py b/service/test/integration/drafts_test.py
new file mode 100644
index 00000000..b70af3f5
--- /dev/null
+++ b/service/test/integration/drafts_test.py
@@ -0,0 +1,62 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
+import unittest
+from test.support.integration_helper import MailBuilder, SoledadTestBase
+
+
+class DraftsTest(unittest.TestCase, SoledadTestBase):
+
+ def setUp(self):
+ self.setup_soledad()
+
+ def tearDown(self):
+ self.teardown_soledad()
+
+ def test_post_creates_a_draft_when_data_has_no_ident(self):
+ mail = MailBuilder().with_subject('A new draft').build_json()
+
+ self.post_mail(mail)
+ mails = self.get_mails_by_tag('drafts')
+
+ self.assertEquals('A new draft', mails[0].subject)
+
+ def test_post_sends_mail_and_deletes_previous_draft_when_data_has_ident(self):
+ first_draft = MailBuilder().with_subject('First draft').build_json()
+ first_draft_response = self.post_mail(first_draft)
+ first_draft_ident = first_draft_response.ident
+
+ second_draft = MailBuilder().with_subject('Second draft').with_ident(first_draft_ident).build_json()
+ self.post_mail(second_draft)
+
+ sent_mails = self.get_mails_by_tag('sent')
+ drafts = self.get_mails_by_tag('drafts')
+
+ self.assertEquals(1, len(sent_mails))
+ self.assertEquals('Second draft', sent_mails[0].subject)
+ self.assertEquals(0, len(drafts))
+
+ def test_update_draft(self):
+ draft = MailBuilder().with_subject('First draft').build_json()
+ create_draft_response = self.post_mail(draft)
+ draft_ident = create_draft_response.ident
+
+ updated_draft = MailBuilder().with_subject('First draft edited').with_ident(draft_ident).build_json()
+ self.put_mail(updated_draft)
+
+ drafts = self.get_mails_by_tag('drafts')
+
+ self.assertEquals(1, len(drafts))
+ self.assertEquals('First draft edited', drafts[0].subject)
diff --git a/service/test/integration/mark_as_read_test.py b/service/test/integration/mark_as_read_test.py
new file mode 100644
index 00000000..2c95ebc1
--- /dev/null
+++ b/service/test/integration/mark_as_read_test.py
@@ -0,0 +1,38 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
+import unittest
+from test.support.integration_helper import MailBuilder, SoledadTestBase
+
+
+class MarkAsReadTest(unittest.TestCase, SoledadTestBase):
+
+ def setUp(self):
+ self.setup_soledad()
+
+ def tearDown(self):
+ self.teardown_soledad()
+
+ def test_mark_as_read(self):
+ input_mail = MailBuilder().build_input_mail()
+ self.pixelated_mailboxes.inbox().add(input_mail)
+
+ mails = self.get_mails_by_tag('inbox')
+ self.assertFalse('read' in mails[0].status)
+
+ self.mark_as_read(input_mail.ident)
+
+ mails = self.get_mails_by_tag('inbox')
+ self.assertTrue('read' in mails[0].status)
diff --git a/service/test/integration/tags_test.py b/service/test/integration/tags_test.py
new file mode 100644
index 00000000..e2ef1c0e
--- /dev/null
+++ b/service/test/integration/tags_test.py
@@ -0,0 +1,52 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
+import json
+import unittest
+from test.support.integration_helper import MailBuilder, SoledadTestBase
+
+
+class TagsTest(unittest.TestCase, SoledadTestBase):
+
+ def setUp(self):
+ self.setup_soledad()
+
+ def tearDown(self):
+ self.teardown_soledad()
+
+ def _tags_json(self, tags):
+ return json.dumps({'newtags': tags})
+
+ def test_add_tag_to_an_inbox_mail_and_query(self):
+ mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
+ self.pixelated_mailboxes.inbox().add(mail)
+
+ self.post_tags(mail.ident, self._tags_json(['IMPORTANT']))
+
+ mails = self.get_mails_by_tag('inbox')
+ self.assertEquals({'important'}, set(mails[0].tags))
+
+ mails = self.get_mails_by_tag('important')
+ self.assertEquals('Mail with tags', mails[0].subject)
+
+ def test_addition_of_reserved_tags_is_not_allowed(self):
+ mail = MailBuilder().with_subject('Mail with tags').build_input_mail()
+ self.pixelated_mailboxes.inbox().add(mail)
+
+ response = self.post_tags(mail.ident, self._tags_json(['DRAFTS']))
+ self.assertEquals("None of the following words can be used as tags: drafts", response)
+
+ mail = self.pixelated_mailboxes.inbox().mail(mail.ident)
+ self.assertNotIn('drafts', mail.tags)
diff --git a/service/test/support/__init__.py b/service/test/support/__init__.py
new file mode 100644
index 00000000..2756a319
--- /dev/null
+++ b/service/test/support/__init__.py
@@ -0,0 +1,15 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
diff --git a/service/test/support/integration_helper.py b/service/test/support/integration_helper.py
new file mode 100644
index 00000000..616485ee
--- /dev/null
+++ b/service/test/support/integration_helper.py
@@ -0,0 +1,177 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
+import json
+
+from leap.soledad.client import Soledad
+from mockito import mock, unstub
+import os
+from mock import Mock
+import shutil
+from pixelated.adapter.mail_service import MailService
+from pixelated.adapter.tag_index import TagIndex
+from pixelated.adapter.tag_service import TagService
+import pixelated.user_agent
+from pixelated.adapter.pixelated_mail import PixelatedMail, InputMail
+from pixelated.adapter.pixelated_mailboxes import PixelatedMailBoxes
+from pixelated.adapter.soledad_querier import SoledadQuerier
+
+soledad_test_folder = "soledad-test"
+
+
+class FakeAccount:
+ def __init__(self):
+ self.mailboxes = ['INBOX', 'DRAFTS', 'SENT', 'TRASH']
+
+
+def initialize_soledad(tempdir):
+ uuid = "foobar-uuid"
+ passphrase = u"verysecretpassphrase"
+ secret_path = os.path.join(tempdir, "secret.gpg")
+ local_db_path = os.path.join(tempdir, "soledad.u1db")
+ server_url = "http://provider"
+ cert_file = ""
+
+ class MockSharedDB(object):
+ get_doc = Mock(return_value=None)
+ put_doc = Mock()
+ lock = Mock(return_value=('atoken', 300))
+ unlock = Mock(return_value=True)
+
+ def __call__(self):
+ return self
+
+ Soledad._shared_db = MockSharedDB()
+
+ _soledad = Soledad(
+ uuid,
+ passphrase,
+ secret_path,
+ local_db_path,
+ server_url,
+ cert_file)
+
+ from leap.mail.imap.fields import fields
+
+ for name, expression in fields.INDEXES.items():
+ _soledad.create_index(name, *expression)
+
+ return _soledad
+
+
+class MailBuilder:
+ def __init__(self):
+ self.mail = {
+ 'header': {
+ 'to': ['recipient@to.com'],
+ 'cc': ['recipient@cc.com'],
+ 'bcc': ['recipient@bcc.com'],
+ 'subject': 'Hi! This the subject'
+ },
+ 'body': "Hello,\nThis is the body of this message\n\nRegards,\n\n--\nPixelated.\n"
+ }
+
+ def with_body(self, body):
+ self.mail['body'] = body
+ return self
+
+ def with_subject(self, subject):
+ self.mail['header']['subject'] = subject
+ return self
+
+ def with_ident(self, ident):
+ self.mail['ident'] = ident
+ return self
+
+ def build_json(self):
+ return json.dumps(self.mail)
+
+ def build_input_mail(self):
+ return InputMail.from_dict(self.mail)
+
+
+class SoledadTestBase:
+ def teardown_soledad(self):
+ self.soledad.close()
+ shutil.rmtree(soledad_test_folder)
+
+ def setup_soledad(self):
+ unstub() # making sure all mocks from other tests are reset
+
+ self.soledad = initialize_soledad(tempdir=soledad_test_folder)
+ self.mail_address = "test@pixelated.org"
+
+ # resetting soledad querier
+ SoledadQuerier.reset()
+ SoledadQuerier.get_instance(soledad=self.soledad)
+
+ # setup app
+ PixelatedMail.from_email_address = self.mail_address
+ self.app = pixelated.user_agent.app.test_client()
+ self.account = FakeAccount()
+ self.mail_sender = mock()
+ self.tag_index = TagIndex(os.path.join(soledad_test_folder, 'tag_index'))
+ self.tag_service = TagService(self.tag_index)
+ self.pixelated_mailboxes = PixelatedMailBoxes(self.account)
+ self.mail_service = MailService(self.pixelated_mailboxes, self.mail_sender, self.tag_service)
+
+ pixelated.user_agent.mail_service = self.mail_service
+
+ def get_mails_by_tag(self, tag):
+ response = json.loads(self.app.get("/mails?q=tag:" + tag).data)
+ return [ResponseMail(m) for m in response['mails']]
+
+ def post_mail(self, data):
+ response = json.loads(self.app.post('/mails', data=data, content_type="application/json").data)
+ return ResponseMail(response)
+
+ def put_mail(self, data):
+ response = json.loads(self.app.put('/mails', data=data, content_type="application/json").data)
+ return response['ident']
+
+ def post_tags(self, mail_ident, tags_json):
+ return json.loads(
+ self.app.post('/mail/' + mail_ident + '/tags', data=tags_json, content_type="application/json").data)
+
+ def delete_mail(self, mail_ident):
+ self.app.delete('/mail/' + mail_ident)
+
+ def mark_as_read(self, mail_ident):
+ self.app.post('/mail/' + mail_ident + '/read', content_type="application/json")
+
+
+class ResponseMail:
+ def __init__(self, mail_dict):
+ self.mail_dict = mail_dict
+
+ @property
+ def subject(self):
+ return self.headers['subject']
+
+ @property
+ def headers(self):
+ return self.mail_dict['header']
+
+ @property
+ def ident(self):
+ return self.mail_dict['ident']
+
+ @property
+ def tags(self):
+ return self.mail_dict['tags']
+
+ @property
+ def status(self):
+ return self.mail_dict['status']
diff --git a/service/test/adapter/test_helper.py b/service/test/support/test_helper.py
index af0fed95..af0fed95 100644
--- a/service/test/adapter/test_helper.py
+++ b/service/test/support/test_helper.py
diff --git a/service/test/unit/__init__.py b/service/test/unit/__init__.py
new file mode 100644
index 00000000..2756a319
--- /dev/null
+++ b/service/test/unit/__init__.py
@@ -0,0 +1,15 @@
+#
+# 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 <http://www.gnu.org/licenses/>.
diff --git a/service/test/adapter/__init__.py b/service/test/unit/adapter/__init__.py
index e69de29b..e69de29b 100644
--- a/service/test/adapter/__init__.py
+++ b/service/test/unit/adapter/__init__.py
diff --git a/service/test/adapter/mail_service_test.py b/service/test/unit/adapter/mail_service_test.py
index 549ab05c..549ab05c 100644
--- a/service/test/adapter/mail_service_test.py
+++ b/service/test/unit/adapter/mail_service_test.py
diff --git a/service/test/adapter/pixelated_mail_sender_test.py b/service/test/unit/adapter/pixelated_mail_sender_test.py
index d75aa57c..207baadb 100644
--- a/service/test/adapter/pixelated_mail_sender_test.py
+++ b/service/test/unit/adapter/pixelated_mail_sender_test.py
@@ -14,10 +14,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
+
from pixelated.adapter.pixelated_mail import PixelatedMail
from pixelated.adapter.pixelated_mail_sender import PixelatedMailSender
from mockito import *
-import test_helper
+from test.support import test_helper
class PixelatedMailSenderTest(unittest.TestCase):
diff --git a/service/test/adapter/pixelated_mail_test.py b/service/test/unit/adapter/pixelated_mail_test.py
index 28f70afa..0ab09a0a 100644
--- a/service/test/adapter/pixelated_mail_test.py
+++ b/service/test/unit/adapter/pixelated_mail_test.py
@@ -14,15 +14,15 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
-import os
+import os
import pixelated.support.date
-import test_helper
from pixelated.adapter.pixelated_mail import PixelatedMail, InputMail
from pixelated.adapter.tag_service import TagService
from pixelated.adapter.tag_index import TagIndex
from pixelated.adapter.tag import Tag
from mockito import *
+from test.support import test_helper
class TestPixelatedMail(unittest.TestCase):
diff --git a/service/test/adapter/pixelated_mailbox_test.py b/service/test/unit/adapter/pixelated_mailbox_test.py
index a6e4a1ab..d38cef5c 100644
--- a/service/test/adapter/pixelated_mailbox_test.py
+++ b/service/test/unit/adapter/pixelated_mailbox_test.py
@@ -17,8 +17,8 @@ import unittest
from pixelated.adapter.pixelated_mail import PixelatedMail
from pixelated.adapter.pixelated_mailbox import PixelatedMailbox
-import test_helper
from mockito import *
+from test.support import test_helper
class PixelatedMailboxTest(unittest.TestCase):
diff --git a/service/test/adapter/pixelated_mailboxes_test.py b/service/test/unit/adapter/pixelated_mailboxes_test.py
index dc7243f2..8314f7f8 100644
--- a/service/test/adapter/pixelated_mailboxes_test.py
+++ b/service/test/unit/adapter/pixelated_mailboxes_test.py
@@ -15,13 +15,12 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
-from test.adapter import test_helper
+from test.support import test_helper
from mockito import *
import pixelated.adapter.soledad_querier
querier = mock()
-global querier
-pixelated.adapter.soledad_querier.get_soledad_querier_instance = lambda x, y: querier
+when(pixelated.adapter.soledad_querier).get_soledad_querier_instance().thenReturn(querier)
from pixelated.adapter.pixelated_mail import InputMail
from pixelated.adapter.pixelated_mailbox import PixelatedMailbox
diff --git a/service/test/adapter/tag_index_test.py b/service/test/unit/adapter/tag_index_test.py
index 21564fc5..21564fc5 100644
--- a/service/test/adapter/tag_index_test.py
+++ b/service/test/unit/adapter/tag_index_test.py
diff --git a/service/test/adapter/test_status.py b/service/test/unit/adapter/test_status.py
index 7f644eca..bcdbb360 100644
--- a/service/test/adapter/test_status.py
+++ b/service/test/unit/adapter/test_status.py
@@ -16,7 +16,6 @@
import unittest
from pixelated.adapter.status import Status
-import test_helper
class TestStatus(unittest.TestCase):
diff --git a/service/test/adapter/test_tag.py b/service/test/unit/adapter/test_tag.py
index fc14ff49..fc14ff49 100644
--- a/service/test/adapter/test_tag.py
+++ b/service/test/unit/adapter/test_tag.py
diff --git a/service/test/adapter/test_tag_service.py b/service/test/unit/adapter/test_tag_service.py
index 5a70e82b..aeb1b503 100644
--- a/service/test/adapter/test_tag_service.py
+++ b/service/test/unit/adapter/test_tag_service.py
@@ -16,11 +16,12 @@
import unittest
import tempfile
-import test_helper
+
from pixelated.adapter.tag import Tag
from pixelated.adapter.pixelated_mail import PixelatedMail
from pixelated.adapter.tag_index import TagIndex
from pixelated.adapter.tag_service import TagService
+from test.support import test_helper
class TagServiceTest(unittest.TestCase):
diff --git a/service/test/bitmask_libraries/__init__.py b/service/test/unit/bitmask_libraries/__init__.py
index e69de29b..e69de29b 100644
--- a/service/test/bitmask_libraries/__init__.py
+++ b/service/test/unit/bitmask_libraries/__init__.py
diff --git a/service/test/bitmask_libraries/abstract_leap_test.py b/service/test/unit/bitmask_libraries/abstract_leap_test.py
index ddcfb08f..ddcfb08f 100644
--- a/service/test/bitmask_libraries/abstract_leap_test.py
+++ b/service/test/unit/bitmask_libraries/abstract_leap_test.py
diff --git a/service/test/bitmask_libraries/leap_srp_test.py b/service/test/unit/bitmask_libraries/leap_srp_test.py
index 591929ce..591929ce 100644
--- a/service/test/bitmask_libraries/leap_srp_test.py
+++ b/service/test/unit/bitmask_libraries/leap_srp_test.py
diff --git a/service/test/bitmask_libraries/nicknym_test.py b/service/test/unit/bitmask_libraries/nicknym_test.py
index 9d564abe..9d564abe 100644
--- a/service/test/bitmask_libraries/nicknym_test.py
+++ b/service/test/unit/bitmask_libraries/nicknym_test.py
diff --git a/service/test/bitmask_libraries/provider_test.py b/service/test/unit/bitmask_libraries/provider_test.py
index 41cf3bf4..41cf3bf4 100644
--- a/service/test/bitmask_libraries/provider_test.py
+++ b/service/test/unit/bitmask_libraries/provider_test.py
diff --git a/service/test/bitmask_libraries/session_test.py b/service/test/unit/bitmask_libraries/session_test.py
index 32d92f25..32d92f25 100644
--- a/service/test/bitmask_libraries/session_test.py
+++ b/service/test/unit/bitmask_libraries/session_test.py
diff --git a/service/test/bitmask_libraries/smtp_test.py b/service/test/unit/bitmask_libraries/smtp_test.py
index 2bb3dcab..2bb3dcab 100644
--- a/service/test/bitmask_libraries/smtp_test.py
+++ b/service/test/unit/bitmask_libraries/smtp_test.py
diff --git a/service/test/bitmask_libraries/soledad_test.py b/service/test/unit/bitmask_libraries/soledad_test.py
index 83a19fe1..83a19fe1 100644
--- a/service/test/bitmask_libraries/soledad_test.py
+++ b/service/test/unit/bitmask_libraries/soledad_test.py
diff --git a/service/test/search/test_search_query.py b/service/test/unit/search/test_search_query.py
index 3bcbd219..3bcbd219 100644
--- a/service/test/search/test_search_query.py
+++ b/service/test/unit/search/test_search_query.py
diff --git a/service/test/user_agent_test.py b/service/test/unit/user_agent_test.py
index be4d9354..22199333 100644
--- a/service/test/user_agent_test.py
+++ b/service/test/unit/user_agent_test.py
@@ -15,18 +15,17 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
+import json
+import sys
+
import pixelated.user_agent
-from pixelated.adapter.pixelated_mail import PixelatedMail
-from pixelated.adapter.pixelated_mail import InputMail
from pixelated.adapter.tag import Tag
from pixelated.adapter.tag_service import TagService
from mockito import *
import crochet
import pixelated.reactor_manager as reactor_manager
-import test.adapter.test_helper as test_helper
-import json
+import test.support.test_helper as test_helper
import pixelated.adapter.pixelated_mail
-import sys
import os