diff options
| -rw-r--r-- | service/pixelated/bitmask_libraries/session.py | 37 | ||||
| -rw-r--r-- | service/test/unit/bitmask_libraries/test_session.py | 36 | 
2 files changed, 28 insertions, 45 deletions
diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py index 2098c9ce..ca3c80ff 100644 --- a/service/pixelated/bitmask_libraries/session.py +++ b/service/pixelated/bitmask_libraries/session.py @@ -55,7 +55,7 @@ class LeapSession(object):      - ``incoming_mail_fetcher`` Background job for fetching incoming mails from LEAP server (LeapIncomingMail)      """ -    def __init__(self, provider, user_auth, mail_store, soledad_session, nicknym, soledad_account, incoming_mail_fetcher, smtp): +    def __init__(self, provider, user_auth, mail_store, soledad_session, nicknym, soledad_account, smtp):          self.smtp = smtp          self.config = provider.config          self.provider = provider @@ -64,27 +64,35 @@ class LeapSession(object):          self.soledad_session = soledad_session          self.nicknym = nicknym          self.account = soledad_account -        self.incoming_mail_fetcher = incoming_mail_fetcher      @defer.inlineCallbacks      def initial_sync(self):          yield self.sync() +        yield self.after_first_sync() + +    def after_first_sync(self):          yield self.nicknym.generate_openpgp_key() -        yield self.start_background_jobs() -        defer.returnValue(self) +        self.incoming_mail_fetcher = yield self._create_incoming_mail_fetcher( +            self.nicknym, +            self.soledad_session, +            self.account, +            self.account_email()) +        reactor.callFromThread(self.incoming_mail_fetcher.startService)      def account_email(self):          name = self.user_auth.username          return self.provider.address_for(name)      def close(self): -        self.stop_background_jobs() +        self.stop_background_jobs      @defer.inlineCallbacks -    def start_background_jobs(self): -        self.incoming_mail_fetcher = yield self.incoming_mail_fetcher - -        reactor.callFromThread(self.incoming_mail_fetcher.startService) +    def _create_incoming_mail_fetcher(self, nicknym, soledad_session, account, user_mail): +        inbox = yield account.callWhenReady(lambda _: account.getMailbox('INBOX')) +        defer.returnValue(IncomingMail(nicknym.keymanager, +                          soledad_session.soledad, +                          inbox.collection, +                          user_mail))      def stop_background_jobs(self):          reactor.callFromThread(self.incoming_mail_fetcher.stopService) @@ -124,11 +132,10 @@ class LeapSessionFactory(object):          nicknym = self._create_nicknym(account_email, auth.token, auth.uuid, soledad)          account = self._create_account(account_email, soledad) -        deferred_incoming_mail_fetcher = self._create_incoming_mail_fetcher(nicknym, soledad, account, account_email)          smtp = LeapSmtp(self._provider, auth, nicknym.keymanager) -        return LeapSession(self._provider, auth, mail_store, soledad, nicknym, account, deferred_incoming_mail_fetcher, smtp) +        return LeapSession(self._provider, auth, mail_store, soledad, nicknym, account, smtp)      def _lookup_session(self, key):          global SESSIONS @@ -161,11 +168,3 @@ class LeapSessionFactory(object):          return account          # memstore = MemoryStore(permanent_store=SoledadStore(soledad_session.soledad))          # return SoledadBackedAccount(uuid, soledad_session.soledad, memstore) - -    @defer.inlineCallbacks -    def _create_incoming_mail_fetcher(self, nicknym, soledad_session, account, user_mail): -        inbox = yield account.callWhenReady(lambda _: account.getMailbox('INBOX')) -        defer.returnValue(IncomingMail(nicknym.keymanager, -                          soledad_session.soledad, -                          inbox.collection, -                          user_mail)) diff --git a/service/test/unit/bitmask_libraries/test_session.py b/service/test/unit/bitmask_libraries/test_session.py index ad2b10d0..e4dddf68 100644 --- a/service/test/unit/bitmask_libraries/test_session.py +++ b/service/test/unit/bitmask_libraries/test_session.py @@ -25,37 +25,22 @@ class SessionTest(AbstractLeapTest):      def setUp(self):          super(SessionTest, self).setUp() -        self.mail_fetcher_mock = MagicMock()          self.smtp_mock = MagicMock() -    def tearDown(self): -        self.mail_fetcher_mock = MagicMock() - -    @defer.inlineCallbacks      def test_background_jobs_are_started_during_initial_sync(self): -        self.config.start_background_jobs = True -          with patch('pixelated.bitmask_libraries.session.reactor.callFromThread', new=_execute_func) as _: -            session = self._create_session() -            yield session.initial_sync() - -            self.mail_fetcher_mock.startService.assert_called_once_with() - -    def test_background_jobs_are_not_started(self): -        self.config.start_background_jobs = False - -        with patch('pixelated.bitmask_libraries.session.reactor.callFromThread', new=_execute_func) as _: -            self._create_session() - -            self.assertFalse(self.mail_fetcher_mock.start_loop.called) +            with patch('pixelated.bitmask_libraries.session.LeapSession._create_incoming_mail_fetcher') as mail_fetcher_mock: +                session = self._create_session() +                yield session.initial_sync() +                mail_fetcher_mock.startService.assert_called_once_with()      def test_that_close_stops_background_jobs(self):          with patch('pixelated.bitmask_libraries.session.reactor.callFromThread', new=_execute_func) as _: -            session = self._create_session() - -            session.close() - -            self.mail_fetcher_mock.stopService.assert_called_once_with() +            with patch('pixelated.bitmask_libraries.session.LeapSession._create_incoming_mail_fetcher') as mail_fetcher_mock: +                session = self._create_session() +                yield session.initial_sync() +                session.close() +                mail_fetcher_mock.stopService.assert_called_once_with()      def test_that_sync_deferes_to_soledad(self):          session = self._create_session() @@ -65,8 +50,7 @@ class SessionTest(AbstractLeapTest):          self.soledad_session.sync.assert_called_once_with()      def _create_session(self): -        return LeapSession(self.provider, self.auth, self.mail_store, self.soledad_session, self.nicknym, self.soledad_account, -                           self.mail_fetcher_mock, self.smtp_mock) +        return LeapSession(self.provider, self.auth, self.mail_store, self.soledad_session, self.nicknym, self.soledad_account, self.smtp_mock)  def _execute_func(func):  | 
