summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTulio Casagrande <tcasagra@thoughtworks.com>2016-04-04 14:29:49 -0300
committerTulio Casagrande <tcasagra@thoughtworks.com>2016-04-04 14:29:49 -0300
commitfe29d4dfe352211f2c3f66a08f8db0048a119a8c (patch)
tree93339dac6bcee7901f0006ed77dfbeaa2c000e99
parent62e18f6845c28676a5b0e3f794cacf29112a580e (diff)
Migrate ImapAccount to Account
Migrate all usage of leap.ImapAccount to leap.Account We had to adapt some calls because of signature changes and, because we need the Account to be initialized before moving on, we are directly using the deferred initialization that the account has See: https://github.com/leapcode/leap_mail/pull/228
-rw-r--r--service/pixelated/adapter/listeners/mailbox_indexer_listener.py9
-rw-r--r--service/pixelated/bitmask_libraries/session.py13
-rw-r--r--service/test/integration/test_incoming_mail.py4
-rw-r--r--service/test/support/integration/app_test_client.py11
-rw-r--r--service/test/unit/adapter/test_mailbox_indexer_listener.py6
-rw-r--r--service/test/unit/bitmask_libraries/test_session.py6
6 files changed, 24 insertions, 25 deletions
diff --git a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
index 74b4f5af..97a887f4 100644
--- a/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
+++ b/service/pixelated/adapter/listeners/mailbox_indexer_listener.py
@@ -27,9 +27,8 @@ class MailboxIndexerListener(object):
@defer.inlineCallbacks
def listen(cls, account, mailbox_name, mail_store, search_engine):
listener = MailboxIndexerListener(mailbox_name, mail_store, search_engine)
- if listener not in (yield account.getMailbox(mailbox_name)).listeners:
- mbx = yield account.getMailbox(mailbox_name)
- mbx.addListener(listener)
+ mail_collection = yield account.get_collection_by_mailbox(mailbox_name)
+ mail_collection.addListener(listener)
defer.returnValue(listener)
@@ -39,7 +38,7 @@ class MailboxIndexerListener(object):
self.search_engine = search_engine
@defer.inlineCallbacks
- def newMessages(self, exists, recent):
+ def notify_new(self):
try:
indexed_idents = set(self.search_engine.search('tag:' + self.mailbox_name.lower(), all_mails=True))
soledad_idents = yield self.mail_store.get_mailbox_mail_ids(self.mailbox_name)
@@ -63,6 +62,6 @@ class MailboxIndexerListener(object):
@defer.inlineCallbacks
def listen_all_mailboxes(account, search_engine, mail_store):
- mailboxes = yield account.account.list_all_mailbox_names()
+ mailboxes = yield account.list_all_mailbox_names()
for mailbox_name in mailboxes:
yield MailboxIndexerListener.listen(account, mailbox_name, mail_store, search_engine)
diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py
index ae3eb992..d575a9c6 100644
--- a/service/pixelated/bitmask_libraries/session.py
+++ b/service/pixelated/bitmask_libraries/session.py
@@ -24,7 +24,7 @@ from twisted.internet import reactor, defer
from pixelated.bitmask_libraries.certs import LeapCertificate
from pixelated.adapter.mailstore import LeapMailStore
from leap.mail.incoming.service import IncomingMail
-from leap.mail.imap.account import IMAPAccount
+from leap.mail.mail import Account
from leap.auth import SRPAuth
from .nicknym import NickNym
from .smtp import LeapSMTPConfig
@@ -73,7 +73,7 @@ class LeapSession(object):
@defer.inlineCallbacks
def after_first_sync(self):
yield self.nicknym.generate_openpgp_key()
- self.account = self._create_account(self.account_email, self.soledad)
+ yield self._create_account(self.soledad)
self.incoming_mail_fetcher = yield self._create_incoming_mail_fetcher(
self.nicknym,
self.soledad,
@@ -81,8 +81,9 @@ class LeapSession(object):
self.account_email())
reactor.callFromThread(self.incoming_mail_fetcher.startService)
- def _create_account(self, user_mail, soledad):
- return IMAPAccount(user_mail, soledad, defer.Deferred())
+ def _create_account(self, soledad):
+ self.account = Account(soledad)
+ return self.account.deferred_initialization
def _set_fresh_account(self, event, email_address):
log.debug('Key for email %s has been generated' % email_address)
@@ -115,10 +116,10 @@ class LeapSession(object):
@defer.inlineCallbacks
def _create_incoming_mail_fetcher(self, nicknym, soledad, account, user_mail):
- inbox = yield account.callWhenReady(lambda _: account.getMailbox('INBOX'))
+ inbox = yield account.callWhenReady(lambda _: account.get_collection_by_mailbox('INBOX'))
defer.returnValue(IncomingMail(nicknym.keymanager,
soledad,
- inbox.collection,
+ inbox,
user_mail))
def stop_background_jobs(self):
diff --git a/service/test/integration/test_incoming_mail.py b/service/test/integration/test_incoming_mail.py
index 682ca118..e413d6c1 100644
--- a/service/test/integration/test_incoming_mail.py
+++ b/service/test/integration/test_incoming_mail.py
@@ -25,12 +25,12 @@ class IncomingMailTest(SoledadTestBase):
@defer.inlineCallbacks
def test_message_collection(self):
# given
- mbx = yield self.account.getMailbox('INBOX')
+ mail_collection = yield self.account.get_collection_by_mailbox('INBOX')
input_mail = MailBuilder().build_input_mail()
# when
yield MailboxIndexerListener.listen(self.account, 'INBOX', self.mail_store, self.search_engine)
- yield mbx.addMessage(input_mail.raw, [], notify_just_mdoc=False)
+ yield mail_collection.add_msg(input_mail.raw)
# then
yield self.wait_in_reactor() # event handlers are called async, wait for it
diff --git a/service/test/support/integration/app_test_client.py b/service/test/support/integration/app_test_client.py
index f3ec5d25..95facec0 100644
--- a/service/test/support/integration/app_test_client.py
+++ b/service/test/support/integration/app_test_client.py
@@ -25,7 +25,7 @@ import uuid
import random
-from leap.mail.imap.account import IMAPAccount
+from leap.mail.mail import Account
from leap.soledad.client import Soledad
from mock import Mock
from twisted.internet import reactor, defer
@@ -77,7 +77,7 @@ class AppTestAccount(object):
self.mail_store = SearchableMailStore(LeapMailStore(self.soledad), self.search_engine)
self.attachment_store = LeapAttachmentStore(self.soledad)
- yield self._initialize_imap_account()
+ yield self._initialize_account()
self.draft_service = DraftService(self.mail_store)
self.leap_session = mock()
@@ -110,10 +110,9 @@ class AppTestAccount(object):
soledad_test_folder = os.path.join(self._leap_home, self._uuid)
shutil.rmtree(soledad_test_folder)
- def _initialize_imap_account(self):
- account_ready_cb = defer.Deferred()
- self.account = IMAPAccount(self._user_id, self.soledad, account_ready_cb)
- return account_ready_cb
+ def _initialize_account(self):
+ self.account = Account(self.soledad)
+ return self.account.deferred_initialization
def _create_mail_service(self, mail_sender, mail_store, search_engine, attachment_store):
return MailService(mail_sender, mail_store, search_engine, self._mail_address, attachment_store)
diff --git a/service/test/unit/adapter/test_mailbox_indexer_listener.py b/service/test/unit/adapter/test_mailbox_indexer_listener.py
index c88ba035..c101aa1a 100644
--- a/service/test/unit/adapter/test_mailbox_indexer_listener.py
+++ b/service/test/unit/adapter/test_mailbox_indexer_listener.py
@@ -31,7 +31,7 @@ class MailboxListenerTest(unittest.TestCase):
def test_add_itself_to_mailbox_listeners(self):
self.account.mailboxes = ['INBOX']
mailbox = mock()
- when(self.account).getMailbox('INBOX').thenReturn(mailbox)
+ when(self.account).get_collection_by_mailbox('INBOX').thenReturn(mailbox)
mailbox.listeners = set()
when(mailbox).addListener = lambda x: mailbox.listeners.add(x)
@@ -49,7 +49,7 @@ class MailboxListenerTest(unittest.TestCase):
listener = MailboxIndexerListener('INBOX', self.mail_store, search_engine)
when(self.mail_store).get_mailbox_mail_ids('INBOX').thenReturn({'ident1', 'ident2', 'missing_ident'})
when(self.mail_store).get_mails({'missing_ident'}, include_body=True).thenReturn([mail])
- listener.newMessages(10, 5)
+ listener.notify_new()
verify(self.mail_store, times=1).get_mails({'missing_ident'}, include_body=True)
verify(search_engine).index_mails([mail])
@@ -59,6 +59,6 @@ class MailboxListenerTest(unittest.TestCase):
when(logger).error(ANY()).thenReturn(None)
listener = MailboxIndexerListener('INBOX', self.mail_store, mock())
- yield listener.newMessages(1, 1)
+ yield listener.notify_new()
verify(logger).error(ANY())
diff --git a/service/test/unit/bitmask_libraries/test_session.py b/service/test/unit/bitmask_libraries/test_session.py
index aad2cac2..84f9f023 100644
--- a/service/test/unit/bitmask_libraries/test_session.py
+++ b/service/test/unit/bitmask_libraries/test_session.py
@@ -29,7 +29,7 @@ class SessionTest(AbstractLeapTest):
self.smtp_mock = MagicMock()
@patch('pixelated.bitmask_libraries.session.register')
- @patch('pixelated.bitmask_libraries.session.IMAPAccount')
+ @patch('pixelated.bitmask_libraries.session.Account')
@defer.inlineCallbacks
def test_background_jobs_are_started_during_initial_sync(self, *unused):
mailFetcherMock = MagicMock()
@@ -41,7 +41,7 @@ class SessionTest(AbstractLeapTest):
@patch('pixelated.bitmask_libraries.session.register')
@patch('pixelated.bitmask_libraries.session.unregister')
- @patch('pixelated.bitmask_libraries.session.IMAPAccount')
+ @patch('pixelated.bitmask_libraries.session.Account')
@defer.inlineCallbacks
def test_that_close_stops_background_jobs(self, *unused):
with patch('pixelated.bitmask_libraries.session.reactor.callFromThread', new=_execute_func) as _:
@@ -153,7 +153,7 @@ class SessionTest(AbstractLeapTest):
@patch('pixelated.bitmask_libraries.session.register')
@patch('pixelated.bitmask_libraries.session.unregister')
- @patch('pixelated.bitmask_libraries.session.IMAPAccount')
+ @patch('pixelated.bitmask_libraries.session.Account')
@defer.inlineCallbacks
def test_session_initial_sync_only_triggered_once(self, *unused):
mailFetcherMock = MagicMock()