summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-10-15 09:42:08 +0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-10-15 09:42:08 +0200
commit89d26f3cd389f41b83d27ea225944a0ff8bc2e95 (patch)
tree31275a0e7c350fd2b9acc2d1210d972bb9a0d3c8
parent6d08b8e65d2c1679d4b489ac196116847f91b3a7 (diff)
Getting rid of singletons and optimizing imports
-rw-r--r--service/pixelated/adapter/listener.py9
-rw-r--r--service/pixelated/adapter/mail_service.py6
-rw-r--r--service/pixelated/adapter/pixelated_mail_sender.py1
-rw-r--r--service/pixelated/adapter/pixelated_mailbox.py6
-rw-r--r--service/pixelated/adapter/pixelated_mailboxes.py19
-rw-r--r--service/pixelated/adapter/soledad_querier.py18
-rw-r--r--service/pixelated/adapter/tag_index.py1
-rw-r--r--service/pixelated/adapter/tag_service.py7
-rw-r--r--service/pixelated/bitmask_libraries/config.py3
-rw-r--r--service/pixelated/bitmask_libraries/leap_srp.py3
-rw-r--r--service/pixelated/bitmask_libraries/provider.py1
-rw-r--r--service/pixelated/bitmask_libraries/session.py7
-rw-r--r--service/pixelated/bitmask_libraries/smtp.py1
-rw-r--r--service/pixelated/bitmask_libraries/soledad.py8
-rw-r--r--service/pixelated/reactor_manager.py3
-rw-r--r--service/pixelated/support/date.py1
-rw-r--r--service/pixelated/user_agent.py11
-rw-r--r--service/test/adapter/draft_service_test.py1
-rw-r--r--service/test/functional/features/environment.py5
-rw-r--r--service/test/functional/features/steps/compose.py6
-rw-r--r--service/test/functional/features/steps/data_setup.py1
-rw-r--r--service/test/functional/features/steps/mail_list.py2
-rw-r--r--service/test/functional/features/steps/mail_view.py3
-rw-r--r--service/test/functional/features/steps/search.py4
-rw-r--r--service/test/functional/features/steps/tag_list.py4
-rw-r--r--service/test/integration/delete_mail_test.py1
-rw-r--r--service/test/integration/drafts_test.py1
-rw-r--r--service/test/integration/mark_as_read_test.py1
-rw-r--r--service/test/integration/mark_as_read_unread_test.py1
-rw-r--r--service/test/integration/search_test.py1
-rw-r--r--service/test/integration/tags_test.py1
-rw-r--r--service/test/support/integration_helper.py19
-rw-r--r--service/test/support/test_helper.py3
-rw-r--r--service/test/unit/adapter/listener_test.py25
-rw-r--r--service/test/unit/adapter/mail_service_test.py6
-rw-r--r--service/test/unit/adapter/pixelated_mail_test.py2
-rw-r--r--service/test/unit/adapter/pixelated_mailboxes_test.py15
-rw-r--r--service/test/unit/bitmask_libraries/abstract_leap_test.py3
-rw-r--r--service/test/unit/bitmask_libraries/leap_srp_test.py2
-rw-r--r--service/test/unit/bitmask_libraries/provider_test.py1
-rw-r--r--service/test/unit/search/test_search_query.py3
-rw-r--r--service/test/unit/user_agent_test.py3
42 files changed, 83 insertions, 136 deletions
diff --git a/service/pixelated/adapter/listener.py b/service/pixelated/adapter/listener.py
index 1ed546fd..67d75df7 100644
--- a/service/pixelated/adapter/listener.py
+++ b/service/pixelated/adapter/listener.py
@@ -13,7 +13,6 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from pixelated.adapter.soledad_querier import SoledadQuerier
class MailboxListener(object):
@@ -22,14 +21,14 @@ class MailboxListener(object):
SEARCH_ENGINE = None
@classmethod
- def listen(cls, account, mailbox_name):
- listener = MailboxListener(mailbox_name)
+ def listen(cls, account, mailbox_name, soledad_querier):
+ listener = MailboxListener(mailbox_name, soledad_querier)
if listener not in account.getMailbox(mailbox_name).listeners:
account.getMailbox(mailbox_name).addListener(listener)
- def __init__(self, mailbox_name):
+ def __init__(self, mailbox_name, soledad_querier):
self.mailbox_name = mailbox_name
- self.querier = SoledadQuerier.get_instance()
+ self.querier = soledad_querier
def newMessages(self, exists, recent):
indexed_idents = set(self.SEARCH_ENGINE.search('tag:' + self.mailbox_name.lower()))
diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py
index 9e29b0c3..e908feb7 100644
--- a/service/pixelated/adapter/mail_service.py
+++ b/service/pixelated/adapter/mail_service.py
@@ -13,17 +13,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/>.
-from pixelated.adapter.tag_service import TagService
-from pixelated.adapter.soledad_querier import SoledadQuerier
class MailService:
__slots__ = ['leap_session', 'account', 'mailbox_name']
- def __init__(self, mailboxes, mail_sender, tag_service=TagService.get_instance()):
+ def __init__(self, mailboxes, mail_sender, tag_service, soledad_querier):
self.tag_service = tag_service
self.mailboxes = mailboxes
- self.querier = SoledadQuerier.get_instance()
+ self.querier = soledad_querier
self.mail_sender = mail_sender
def all_mails(self):
diff --git a/service/pixelated/adapter/pixelated_mail_sender.py b/service/pixelated/adapter/pixelated_mail_sender.py
index 4189517d..cf30779f 100644
--- a/service/pixelated/adapter/pixelated_mail_sender.py
+++ b/service/pixelated/adapter/pixelated_mail_sender.py
@@ -14,6 +14,7 @@
# 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 smtplib
+
from pixelated.support.functional import flatten
diff --git a/service/pixelated/adapter/pixelated_mailbox.py b/service/pixelated/adapter/pixelated_mailbox.py
index 0ad79b11..283567db 100644
--- a/service/pixelated/adapter/pixelated_mailbox.py
+++ b/service/pixelated/adapter/pixelated_mailbox.py
@@ -14,8 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from pixelated.adapter.soledad_querier import SoledadQuerier
-
class PixelatedMailbox:
@@ -51,5 +49,5 @@ class PixelatedMailbox:
self.querier.remove_mail(mail)
@classmethod
- def create(cls, mailbox_name='INBOX'):
- return PixelatedMailbox(mailbox_name, SoledadQuerier.get_instance())
+ def create(cls, mailbox_name, soledad_querier):
+ return PixelatedMailbox(mailbox_name, soledad_querier)
diff --git a/service/pixelated/adapter/pixelated_mailboxes.py b/service/pixelated/adapter/pixelated_mailboxes.py
index 1025f58e..79c007cb 100644
--- a/service/pixelated/adapter/pixelated_mailboxes.py
+++ b/service/pixelated/adapter/pixelated_mailboxes.py
@@ -14,24 +14,23 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
from pixelated.adapter.pixelated_mailbox import PixelatedMailbox
-from pixelated.adapter.soledad_querier import SoledadQuerier
from pixelated.adapter.listener import MailboxListener
class PixelatedMailBoxes():
- def __init__(self, account):
+ def __init__(self, account, soledad_querier):
self.account = account
- self.querier = SoledadQuerier.get_instance()
+ self.querier = soledad_querier
for mailbox_name in account.mailboxes:
- MailboxListener.listen(self.account, mailbox_name)
+ MailboxListener.listen(self.account, mailbox_name, soledad_querier)
def _create_or_get(self, mailbox_name):
mailbox_name = mailbox_name.upper()
if mailbox_name not in self.account.mailboxes:
self.account.addMailbox(mailbox_name)
- MailboxListener.listen(self.account, mailbox_name)
- return PixelatedMailbox.create(mailbox_name)
+ MailboxListener.listen(self.account, mailbox_name, self.querier)
+ return PixelatedMailbox.create(mailbox_name, self.querier)
def inbox(self):
return self._create_or_get('INBOX')
@@ -45,14 +44,12 @@ class PixelatedMailBoxes():
def sent(self):
return self._create_or_get('SENT')
- @property
def mailboxes(self):
- return [PixelatedMailbox.create(leap_mailbox_name) for leap_mailbox_name in
- self.account.mailboxes]
+ return [self._create_or_get(leap_mailbox_name) for leap_mailbox_name in self.account.mailboxes]
def mails_by_tag(self, query_tags):
mails = []
- for mailbox in self.mailboxes:
+ for mailbox in self.mailboxes():
mails.extend(mailbox.mails_by_tags(query_tags))
return mails
@@ -65,7 +62,7 @@ class PixelatedMailBoxes():
return mail
def mail(self, mail_id):
- for mailbox in self.mailboxes:
+ for mailbox in self.mailboxes():
mail = mailbox.mail(mail_id)
if mail:
return mail
diff --git a/service/pixelated/adapter/soledad_querier.py b/service/pixelated/adapter/soledad_querier.py
index 35c8780f..f121a463 100644
--- a/service/pixelated/adapter/soledad_querier.py
+++ b/service/pixelated/adapter/soledad_querier.py
@@ -16,29 +16,11 @@
from pixelated.adapter.pixelated_mail import PixelatedMail
-def get_soledad_querier_instance(cls, soledad=None):
- if not cls.instance:
- if not soledad:
- raise Exception("Need a soledad for the first time you call this")
- cls.instance = SoledadQuerier(soledad)
- return cls.instance
-
-
class SoledadQuerier:
- instance = None
-
def __init__(self, soledad):
self.soledad = soledad
- @classmethod
- def get_instance(cls, soledad=None):
- return get_soledad_querier_instance(cls, soledad)
-
- @classmethod
- def reset(cls):
- cls.instance = None
-
def all_mails(self):
fdocs_chash = [(fdoc, fdoc.content['chash']) for fdoc in self.soledad.get_from_index('by-type', 'flags')]
if len(fdocs_chash) == 0:
diff --git a/service/pixelated/adapter/tag_index.py b/service/pixelated/adapter/tag_index.py
index 2a0955ef..5b9bda51 100644
--- a/service/pixelated/adapter/tag_index.py
+++ b/service/pixelated/adapter/tag_index.py
@@ -16,6 +16,7 @@
#
import dbm
import atexit
+
import os
from pixelated.adapter.tag import Tag
diff --git a/service/pixelated/adapter/tag_service.py b/service/pixelated/adapter/tag_service.py
index fa70231e..54b88622 100644
--- a/service/pixelated/adapter/tag_service.py
+++ b/service/pixelated/adapter/tag_service.py
@@ -14,7 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
from pixelated.adapter.tag import Tag
-from pixelated.adapter.tag_index import TagIndex
class TagService:
@@ -25,9 +24,3 @@ class TagService:
@classmethod
def extract_reserved(cls, tags):
return {tag.name for tag in cls.SPECIAL_TAGS if tag.name in tags}
-
- @classmethod
- def get_instance(cls):
- if not cls.instance:
- cls.instance = TagService()
- return cls.instance
diff --git a/service/pixelated/bitmask_libraries/config.py b/service/pixelated/bitmask_libraries/config.py
index c1255060..1cc10523 100644
--- a/service/pixelated/bitmask_libraries/config.py
+++ b/service/pixelated/bitmask_libraries/config.py
@@ -13,9 +13,10 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
+from distutils.spawn import find_executable
+
import os
from os.path import expanduser
-from distutils.spawn import find_executable
def discover_gpg_binary():
diff --git a/service/pixelated/bitmask_libraries/leap_srp.py b/service/pixelated/bitmask_libraries/leap_srp.py
index 05e27a94..7a627c1d 100644
--- a/service/pixelated/bitmask_libraries/leap_srp.py
+++ b/service/pixelated/bitmask_libraries/leap_srp.py
@@ -15,13 +15,14 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import binascii
import json
-import requests
+import requests
from requests import Session
from srp import User, srp, create_salted_verification_key
from requests.exceptions import HTTPError, SSLError, Timeout
from config import SYSTEM_CA_BUNDLE
+
REGISTER_USER_LOGIN_KEY = 'user[login]'
REGISTER_USER_VERIFIER_KEY = 'user[password_verifier]'
REGISTER_USER_SALT_KEY = 'user[password_salt]'
diff --git a/service/pixelated/bitmask_libraries/provider.py b/service/pixelated/bitmask_libraries/provider.py
index 6848dc6e..4fe5f17d 100644
--- a/service/pixelated/bitmask_libraries/provider.py
+++ b/service/pixelated/bitmask_libraries/provider.py
@@ -17,7 +17,6 @@ import json
from leap.common.certs import get_digest
import requests
-
from .certs import which_bundle
diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py
index 7c195391..78219635 100644
--- a/service/pixelated/bitmask_libraries/session.py
+++ b/service/pixelated/bitmask_libraries/session.py
@@ -13,23 +13,24 @@
#
# 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 os
import errno
import traceback
+import sys
+
+import os
from leap.mail.imap.fetch import LeapIncomingMail
from leap.mail.imap.account import SoledadBackedAccount
-import sys
from leap.mail.imap.memorystore import MemoryStore
from leap.mail.imap.soledadstore import SoledadStore
from pixelated.bitmask_libraries.config import LeapConfig
from pixelated.bitmask_libraries.provider import LeapProvider
from twisted.internet import reactor
from .nicknym import NickNym
-
from .auth import LeapAuthenticator, LeapCredentials
from .soledad import SoledadSessionFactory, SoledadSession
from .smtp import LeapSmtp
+
SESSIONS = {}
diff --git a/service/pixelated/bitmask_libraries/smtp.py b/service/pixelated/bitmask_libraries/smtp.py
index a04fbf74..343cb655 100644
--- a/service/pixelated/bitmask_libraries/smtp.py
+++ b/service/pixelated/bitmask_libraries/smtp.py
@@ -17,7 +17,6 @@ import os
import requests
from .certs import which_bundle
from leap.mail.smtp import setup_smtp_gateway
-import random
class LeapSmtp(object):
diff --git a/service/pixelated/bitmask_libraries/soledad.py b/service/pixelated/bitmask_libraries/soledad.py
index f274dfc1..cf71a727 100644
--- a/service/pixelated/bitmask_libraries/soledad.py
+++ b/service/pixelated/bitmask_libraries/soledad.py
@@ -13,17 +13,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 json
-import os
import errno
+
+import os
from leap.keymanager import KeyManager
from leap.soledad.client import Soledad
from leap.soledad.common.crypto import WrongMac, UnknownMacMethod, MacMethods
-import requests
-import sys
-import time
from .certs import which_bundle
+
SOLEDAD_TIMEOUT = 120
SOLEDAD_CERT = '/tmp/ca.crt'
diff --git a/service/pixelated/reactor_manager.py b/service/pixelated/reactor_manager.py
index 488b0bc4..c9473400 100644
--- a/service/pixelated/reactor_manager.py
+++ b/service/pixelated/reactor_manager.py
@@ -16,9 +16,10 @@
import signal
import sys
from threading import Thread
-from twisted.internet import reactor
import logging
+from twisted.internet import reactor
+
def signal_handler(signal, frame):
stop_reactor_on_exit()
diff --git a/service/pixelated/support/date.py b/service/pixelated/support/date.py
index 1593022c..329b8bfe 100644
--- a/service/pixelated/support/date.py
+++ b/service/pixelated/support/date.py
@@ -14,6 +14,7 @@
# 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 datetime
+
from dateutil.tz import tzlocal
diff --git a/service/pixelated/user_agent.py b/service/pixelated/user_agent.py
index c20a29d8..64e639d0 100644
--- a/service/pixelated/user_agent.py
+++ b/service/pixelated/user_agent.py
@@ -19,7 +19,6 @@ import getpass
import os
import os.path
-import re
import crochet
from flask import Flask
from flask import request
@@ -37,9 +36,9 @@ from pixelated.adapter.soledad_querier import SoledadQuerier
from pixelated.adapter.search import SearchEngine
from pixelated.adapter.draft_service import DraftService
from pixelated.adapter.listener import MailboxListener
-
import dateutil.parser as dateparser
+
static_folder = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", "web-ui", "app"))
# this is a workaround for packaging
@@ -206,13 +205,15 @@ def register_new_user(username):
def start_user_agent(debug_enabled):
leap_session = LeapSession.open(app.config['LEAP_USERNAME'], app.config['LEAP_PASSWORD'],
app.config['LEAP_SERVER_NAME'])
- SoledadQuerier.get_instance(soledad=leap_session.account._soledad)
+ soledad_querier = SoledadQuerier(soledad=leap_session.account._soledad)
+
PixelatedMail.from_email_address = leap_session.account_email()
pixelated_mailboxes = PixelatedMailBoxes(leap_session.account)
pixelated_mail_sender = PixelatedMailSender(leap_session.account_email())
-
+ from pixelated.adapter.tag_service import TagService
+ tag_service = TagService()
global mail_service
- mail_service = MailService(pixelated_mailboxes, pixelated_mail_sender)
+ mail_service = MailService(pixelated_mailboxes, pixelated_mail_sender, tag_service, soledad_querier)
global search_engine
search_engine = SearchEngine()
MailboxListener.SEARCH_ENGINE = search_engine
diff --git a/service/test/adapter/draft_service_test.py b/service/test/adapter/draft_service_test.py
index 92b25d36..99b1e3b8 100644
--- a/service/test/adapter/draft_service_test.py
+++ b/service/test/adapter/draft_service_test.py
@@ -1,4 +1,5 @@
import unittest
+
from pixelated.adapter.pixelated_mail import InputMail
from pixelated.adapter.draft_service import DraftService
import test_helper
diff --git a/service/test/functional/features/environment.py b/service/test/functional/features/environment.py
index db4aea9b..f65b11a6 100644
--- a/service/test/functional/features/environment.py
+++ b/service/test/functional/features/environment.py
@@ -13,11 +13,12 @@
#
# 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 time
+import multiprocessing
+
from selenium import webdriver
from test.support.integration_helper import SoledadTestBase
-import time
import pixelated.user_agent
-import multiprocessing
def before_all(context):
diff --git a/service/test/functional/features/steps/compose.py b/service/test/functional/features/steps/compose.py
index 5e323866..8bf88598 100644
--- a/service/test/functional/features/steps/compose.py
+++ b/service/test/functional/features/steps/compose.py
@@ -13,11 +13,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from behave import given, when
-from selenium.webdriver.common.by import By
-from selenium.webdriver.support import expected_conditions as EC
-from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
+
+from behave import given, when
from common import *
from hamcrest import *
diff --git a/service/test/functional/features/steps/data_setup.py b/service/test/functional/features/steps/data_setup.py
index 4f70a8db..51c5f9b8 100644
--- a/service/test/functional/features/steps/data_setup.py
+++ b/service/test/functional/features/steps/data_setup.py
@@ -13,7 +13,6 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from behave import *
from test.support.integration_helper import MailBuilder
diff --git a/service/test/functional/features/steps/mail_list.py b/service/test/functional/features/steps/mail_list.py
index c642b4bd..a1c83848 100644
--- a/service/test/functional/features/steps/mail_list.py
+++ b/service/test/functional/features/steps/mail_list.py
@@ -13,8 +13,6 @@
#
# 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 re
-from behave import *
from common import *
diff --git a/service/test/functional/features/steps/mail_view.py b/service/test/functional/features/steps/mail_view.py
index 2b0f1abb..a127b62c 100644
--- a/service/test/functional/features/steps/mail_view.py
+++ b/service/test/functional/features/steps/mail_view.py
@@ -13,12 +13,9 @@
#
# 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 re
from selenium.webdriver.common.keys import Keys
-from behave import *
from common import *
from hamcrest import *
-from time import sleep
@then('I see that the subject reads \'{subject}\'')
diff --git a/service/test/functional/features/steps/search.py b/service/test/functional/features/steps/search.py
index cf97eb74..8c410112 100644
--- a/service/test/functional/features/steps/search.py
+++ b/service/test/functional/features/steps/search.py
@@ -13,11 +13,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/>.
+from time import sleep
+
from selenium.webdriver.common.keys import Keys
-from behave import *
from common import *
from hamcrest import *
-from time import sleep
@when('I search for a mail with the words "{search_term}"')
diff --git a/service/test/functional/features/steps/tag_list.py b/service/test/functional/features/steps/tag_list.py
index b6f654f0..9a6aceb9 100644
--- a/service/test/functional/features/steps/tag_list.py
+++ b/service/test/functional/features/steps/tag_list.py
@@ -13,10 +13,6 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
-from behave import *
-from selenium.webdriver.common.by import By
-from selenium.webdriver.support import expected_conditions as EC
-from selenium.webdriver.support.wait import WebDriverWait
from common import *
diff --git a/service/test/integration/delete_mail_test.py b/service/test/integration/delete_mail_test.py
index 665c7793..894f84bf 100644
--- a/service/test/integration/delete_mail_test.py
+++ b/service/test/integration/delete_mail_test.py
@@ -14,6 +14,7 @@
# 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
diff --git a/service/test/integration/drafts_test.py b/service/test/integration/drafts_test.py
index 64826fde..e0b49c13 100644
--- a/service/test/integration/drafts_test.py
+++ b/service/test/integration/drafts_test.py
@@ -14,6 +14,7 @@
# 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
diff --git a/service/test/integration/mark_as_read_test.py b/service/test/integration/mark_as_read_test.py
index 5dd90d77..f4f4aefd 100644
--- a/service/test/integration/mark_as_read_test.py
+++ b/service/test/integration/mark_as_read_test.py
@@ -14,6 +14,7 @@
# 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
diff --git a/service/test/integration/mark_as_read_unread_test.py b/service/test/integration/mark_as_read_unread_test.py
index cdac78d5..7fb89fac 100644
--- a/service/test/integration/mark_as_read_unread_test.py
+++ b/service/test/integration/mark_as_read_unread_test.py
@@ -14,6 +14,7 @@
# 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
diff --git a/service/test/integration/search_test.py b/service/test/integration/search_test.py
index 1a72a9bf..7323866d 100644
--- a/service/test/integration/search_test.py
+++ b/service/test/integration/search_test.py
@@ -14,6 +14,7 @@
# 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
diff --git a/service/test/integration/tags_test.py b/service/test/integration/tags_test.py
index dea9fbd2..351713eb 100644
--- a/service/test/integration/tags_test.py
+++ b/service/test/integration/tags_test.py
@@ -15,6 +15,7 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import json
import unittest
+
from test.support.integration_helper import MailBuilder, SoledadTestBase
diff --git a/service/test/support/integration_helper.py b/service/test/support/integration_helper.py
index 7b6af2e4..2316774a 100644
--- a/service/test/support/integration_helper.py
+++ b/service/test/support/integration_helper.py
@@ -14,12 +14,12 @@
# 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 shutil
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.search import SearchEngine
from pixelated.adapter.status import Status
@@ -139,24 +139,21 @@ class SoledadTestBase:
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()
pixelated.user_agent.DISABLED_FEATURES.append('autoReload')
+ SearchEngine.INDEX_FOLDER = soledad_test_folder + '/search_index'
+
+ self.app = pixelated.user_agent.app.test_client()
+
+ self.soledad_querier = SoledadQuerier(self.soledad)
self.account = FakeAccount()
- self.pixelated_mailboxes = PixelatedMailBoxes(self.account)
+ self.pixelated_mailboxes = PixelatedMailBoxes(self.account, self.soledad_querier)
self.mail_sender = mock()
self.tag_service = TagService()
self.draft_service = DraftService(self.pixelated_mailboxes)
- self.mail_service = MailService(self.pixelated_mailboxes, self.mail_sender, self.tag_service)
-
- SearchEngine.INDEX_FOLDER = soledad_test_folder + '/search_index'
+ self.mail_service = MailService(self.pixelated_mailboxes, self.mail_sender, self.tag_service, self.soledad_querier)
self.search_engine = SearchEngine()
-
self.search_engine.index_mails(self.mail_service.all_mails())
pixelated.user_agent.mail_service = self.mail_service
diff --git a/service/test/support/test_helper.py b/service/test/support/test_helper.py
index af0fed95..66ed9a10 100644
--- a/service/test/support/test_helper.py
+++ b/service/test/support/test_helper.py
@@ -13,10 +13,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/>.
-from mock import Mock
from datetime import datetime
+
from pixelated.adapter.pixelated_mail import InputMail
+
LEAP_FLAGS = ['\\Seen',
'\\Answered',
'\\Flagged',
diff --git a/service/test/unit/adapter/listener_test.py b/service/test/unit/adapter/listener_test.py
index 284c6b16..e131aebd 100644
--- a/service/test/unit/adapter/listener_test.py
+++ b/service/test/unit/adapter/listener_test.py
@@ -16,16 +16,12 @@
import unittest
from mockito import *
-import pixelated.adapter.soledad_querier
-
-querier = mock()
-when(pixelated.adapter.soledad_querier).get_soledad_querier_instance().thenReturn(querier)
-
from pixelated.adapter.listener import MailboxListener
class MailboxListenerTest(unittest.TestCase):
def setUp(self):
+ self.querier = mock()
self.account = mock()
self.account.mailboxes = []
@@ -36,11 +32,11 @@ class MailboxListenerTest(unittest.TestCase):
mailbox.listeners = set()
when(mailbox).addListener = lambda x: mailbox.listeners.add(x)
- self.assertNotIn(MailboxListener('INBOX'), mailbox.listeners)
+ self.assertNotIn(MailboxListener('INBOX', self.querier), mailbox.listeners)
- MailboxListener.listen(self.account, 'INBOX')
+ MailboxListener.listen(self.account, 'INBOX', self.querier)
- self.assertIn(MailboxListener('INBOX'), mailbox.listeners)
+ self.assertIn(MailboxListener('INBOX', self.querier), mailbox.listeners)
def test_reindex_missing_idents(self):
search_engine = mock()
@@ -48,12 +44,11 @@ class MailboxListenerTest(unittest.TestCase):
MailboxListener.SEARCH_ENGINE = search_engine
- listener = MailboxListener('INBOX')
- listener.querier = querier
- when(querier).idents_by_mailbox('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'})
- querier.used_arguments = []
- querier.mails = lambda x: querier.used_arguments.append(x)
+ listener = MailboxListener('INBOX', self.querier)
+ when(self.querier).idents_by_mailbox('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'})
+ self.querier.used_arguments = []
+ self.querier.mails = lambda x: self.querier.used_arguments.append(x)
listener.newMessages(10, 5)
- verify(querier, times=1).idents_by_mailbox('INBOX')
- self.assertIn({'missing_ident'}, querier.used_arguments)
+ verify(self.querier, times=1).idents_by_mailbox('INBOX')
+ self.assertIn({'missing_ident'}, self.querier.used_arguments)
diff --git a/service/test/unit/adapter/mail_service_test.py b/service/test/unit/adapter/mail_service_test.py
index 21f34b12..c69f8f74 100644
--- a/service/test/unit/adapter/mail_service_test.py
+++ b/service/test/unit/adapter/mail_service_test.py
@@ -17,21 +17,19 @@ import unittest
from pixelated.adapter.mail_service import MailService
from mockito import *
-import pixelated.adapter.soledad_querier
class TestMailService(unittest.TestCase):
def setUp(self):
self.querier = mock()
- pixelated.adapter.soledad_querier.get_soledad_querier_instance = lambda x, y: self.querier
-
self.mailboxes = mock()
+ self.tag_service = mock()
self.mailboxes.drafts = lambda: mock()
self.mailboxes.trash = lambda: mock()
self.mailboxes.sent = lambda: mock()
self.mail_sender = mock()
- self.mail_service = MailService(self.mailboxes, self.mail_sender)
+ self.mail_service = MailService(self.mailboxes, self.mail_sender, self.tag_service, self.querier)
def test_send_mail(self):
mail = "mail"
diff --git a/service/test/unit/adapter/pixelated_mail_test.py b/service/test/unit/adapter/pixelated_mail_test.py
index 904f621d..eb66f0fb 100644
--- a/service/test/unit/adapter/pixelated_mail_test.py
+++ b/service/test/unit/adapter/pixelated_mail_test.py
@@ -15,10 +15,8 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
-import os
import pixelated.support.date
from pixelated.adapter.pixelated_mail import PixelatedMail, InputMail
-from pixelated.adapter.tag import Tag
from mockito import *
from test.support import test_helper
diff --git a/service/test/unit/adapter/pixelated_mailboxes_test.py b/service/test/unit/adapter/pixelated_mailboxes_test.py
index ddb3e84b..3ca8cc2f 100644
--- a/service/test/unit/adapter/pixelated_mailboxes_test.py
+++ b/service/test/unit/adapter/pixelated_mailboxes_test.py
@@ -15,14 +15,7 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
-from test.support import test_helper
from mockito import *
-import pixelated.adapter.soledad_querier
-
-querier = mock()
-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
from pixelated.adapter.pixelated_mailboxes import PixelatedMailBoxes
@@ -30,19 +23,21 @@ from pixelated.adapter.pixelated_mailboxes import PixelatedMailBoxes
class PixelatedMailboxesTest(unittest.TestCase):
def setUp(self):
+ self.querier = mock()
self.account = mock()
self.account.mailboxes = []
self.drafts_mailbox = mock()
self.drafts_mailbox.mailbox_name = 'drafts'
- self.mailboxes = PixelatedMailBoxes(self.account)
+ self.mailboxes = PixelatedMailBoxes(self.account, self.querier)
self.mailboxes.drafts = lambda: self.drafts_mailbox
def test_search_for_tags(self):
mailbox = mock()
- self.account.mailboxes = ['INBOX']
+ self.mailboxes.mailboxes = lambda: [mailbox]
+
tags_to_search_for = {'tags': ['inbox', 'custom_tag']}
- when(PixelatedMailbox).create('INBOX').thenReturn(mailbox)
+ when(PixelatedMailbox).create('INBOX', self.querier).thenReturn(mailbox)
when(mailbox).mails_by_tags(any(list)).thenReturn(["mail"])
mails = self.mailboxes.mails_by_tag(tags_to_search_for['tags'])
diff --git a/service/test/unit/bitmask_libraries/abstract_leap_test.py b/service/test/unit/bitmask_libraries/abstract_leap_test.py
index ddcfb08f..2634f330 100644
--- a/service/test/unit/bitmask_libraries/abstract_leap_test.py
+++ b/service/test/unit/bitmask_libraries/abstract_leap_test.py
@@ -13,10 +13,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 os
import tempfile
import unittest
from uuid import uuid4
+
+import os
from mock import Mock, MagicMock
diff --git a/service/test/unit/bitmask_libraries/leap_srp_test.py b/service/test/unit/bitmask_libraries/leap_srp_test.py
index 591929ce..6d067e5d 100644
--- a/service/test/unit/bitmask_libraries/leap_srp_test.py
+++ b/service/test/unit/bitmask_libraries/leap_srp_test.py
@@ -21,9 +21,9 @@ from urlparse import parse_qs
from httmock import urlmatch, all_requests, HTTMock, response
from requests.exceptions import Timeout
import srp
-
from pixelated.bitmask_libraries.leap_srp import LeapSecureRemotePassword, LeapAuthException
+
(salt_bytes, verification_key_bytes) = srp.create_salted_verification_key('username', 'password', hash_alg=srp.SHA256, ng_type=srp.NG_1024)
verifier = None
diff --git a/service/test/unit/bitmask_libraries/provider_test.py b/service/test/unit/bitmask_libraries/provider_test.py
index 41cf3bf4..dd57afa0 100644
--- a/service/test/unit/bitmask_libraries/provider_test.py
+++ b/service/test/unit/bitmask_libraries/provider_test.py
@@ -17,7 +17,6 @@ import json
from httmock import all_requests, HTTMock, urlmatch
from requests import HTTPError
-
from pixelated.bitmask_libraries.config import LeapConfig
from pixelated.bitmask_libraries.provider import LeapProvider
from abstract_leap_test import AbstractLeapTest
diff --git a/service/test/unit/search/test_search_query.py b/service/test/unit/search/test_search_query.py
index 3bcbd219..179d121a 100644
--- a/service/test/unit/search/test_search_query.py
+++ b/service/test/unit/search/test_search_query.py
@@ -13,9 +13,8 @@
#
# 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 sys
-import os
import unittest
+
import pixelated.search_query as search_query
diff --git a/service/test/unit/user_agent_test.py b/service/test/unit/user_agent_test.py
index ea695b26..0ea83a5d 100644
--- a/service/test/unit/user_agent_test.py
+++ b/service/test/unit/user_agent_test.py
@@ -15,12 +15,9 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
-import json
import sys
import pixelated.user_agent
-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