From fe29d4dfe352211f2c3f66a08f8db0048a119a8c Mon Sep 17 00:00:00 2001 From: Tulio Casagrande Date: Mon, 4 Apr 2016 14:29:49 -0300 Subject: 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 --- .../pixelated/adapter/listeners/mailbox_indexer_listener.py | 9 ++++----- service/pixelated/bitmask_libraries/session.py | 13 +++++++------ service/test/integration/test_incoming_mail.py | 4 ++-- service/test/support/integration/app_test_client.py | 11 +++++------ service/test/unit/adapter/test_mailbox_indexer_listener.py | 6 +++--- service/test/unit/bitmask_libraries/test_session.py | 6 +++--- 6 files changed, 24 insertions(+), 25 deletions(-) (limited to 'service') 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() -- cgit v1.2.3