diff options
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 | 
