From 89d26f3cd389f41b83d27ea225944a0ff8bc2e95 Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Wed, 15 Oct 2014 09:42:08 +0200 Subject: Getting rid of singletons and optimizing imports --- service/pixelated/adapter/listener.py | 9 ++++---- service/pixelated/adapter/mail_service.py | 6 ++---- service/pixelated/adapter/pixelated_mail_sender.py | 1 + service/pixelated/adapter/pixelated_mailbox.py | 6 ++---- service/pixelated/adapter/pixelated_mailboxes.py | 19 +++++++--------- service/pixelated/adapter/soledad_querier.py | 18 ---------------- service/pixelated/adapter/tag_index.py | 1 + service/pixelated/adapter/tag_service.py | 7 ------ service/pixelated/bitmask_libraries/config.py | 3 ++- service/pixelated/bitmask_libraries/leap_srp.py | 3 ++- service/pixelated/bitmask_libraries/provider.py | 1 - service/pixelated/bitmask_libraries/session.py | 7 +++--- service/pixelated/bitmask_libraries/smtp.py | 1 - service/pixelated/bitmask_libraries/soledad.py | 8 +++---- service/pixelated/reactor_manager.py | 3 ++- service/pixelated/support/date.py | 1 + service/pixelated/user_agent.py | 11 +++++----- service/test/adapter/draft_service_test.py | 1 + service/test/functional/features/environment.py | 5 +++-- service/test/functional/features/steps/compose.py | 6 ++---- .../test/functional/features/steps/data_setup.py | 1 - .../test/functional/features/steps/mail_list.py | 2 -- .../test/functional/features/steps/mail_view.py | 3 --- service/test/functional/features/steps/search.py | 4 ++-- service/test/functional/features/steps/tag_list.py | 4 ---- service/test/integration/delete_mail_test.py | 1 + service/test/integration/drafts_test.py | 1 + service/test/integration/mark_as_read_test.py | 1 + .../test/integration/mark_as_read_unread_test.py | 1 + service/test/integration/search_test.py | 1 + service/test/integration/tags_test.py | 1 + service/test/support/integration_helper.py | 19 +++++++--------- service/test/support/test_helper.py | 3 ++- service/test/unit/adapter/listener_test.py | 25 +++++++++------------- service/test/unit/adapter/mail_service_test.py | 6 ++---- service/test/unit/adapter/pixelated_mail_test.py | 2 -- .../test/unit/adapter/pixelated_mailboxes_test.py | 15 +++++-------- .../unit/bitmask_libraries/abstract_leap_test.py | 3 ++- .../test/unit/bitmask_libraries/leap_srp_test.py | 2 +- .../test/unit/bitmask_libraries/provider_test.py | 1 - service/test/unit/search/test_search_query.py | 3 +-- service/test/unit/user_agent_test.py | 3 --- 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 . -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 . -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 . 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 . -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 . 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 . 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 . +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 . 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 . -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 . -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 . 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 . +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 . -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 . -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 . -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 . -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 . +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 . -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 . 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 . 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 . 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 . 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 . 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 . 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 . 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 . -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 . 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 . 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 . -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 . -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 . 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 -- cgit v1.2.3