From 36b9261f609901b83da4f8915640eb6043530f01 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 9 Oct 2015 11:53:07 -0300 Subject: adds a listener for SOLEDAD_INVALID_AUTH_TOKEN --Issue #485 --- service/pixelated/bitmask_libraries/soledad.py | 6 ++++++ service/test/unit/bitmask_libraries/test_soledad.py | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'service') diff --git a/service/pixelated/bitmask_libraries/soledad.py b/service/pixelated/bitmask_libraries/soledad.py index 0546a158..84f9c3a3 100644 --- a/service/pixelated/bitmask_libraries/soledad.py +++ b/service/pixelated/bitmask_libraries/soledad.py @@ -16,6 +16,11 @@ import errno import os +from twisted.internet import reactor +from leap.common.events import ( + register, + catalog as events +) from leap.soledad.client import Soledad from leap.soledad.common.crypto import WrongMacError, UnknownMacMethodError from pixelated.bitmask_libraries.certs import LeapCertificate @@ -42,6 +47,7 @@ class SoledadSessionFactory(object): class SoledadSession(object): def __init__(self, provider, encryption_passphrase, user_token, user_uuid): + register(events.SOLEDAD_INVALID_AUTH_TOKEN, lambda _: reactor.stop()) self.provider = provider self.config = provider.config self.user_uuid = user_uuid diff --git a/service/test/unit/bitmask_libraries/test_soledad.py b/service/test/unit/bitmask_libraries/test_soledad.py index af2cfd0a..2359a652 100644 --- a/service/test/unit/bitmask_libraries/test_soledad.py +++ b/service/test/unit/bitmask_libraries/test_soledad.py @@ -17,6 +17,7 @@ from mock import patch from pixelated.bitmask_libraries.soledad import SoledadSession from pixelated.bitmask_libraries.certs import LeapCertificate from test_abstract_leap import AbstractLeapTest +from leap.common.events import catalog as events class SoledadSessionTest(AbstractLeapTest): @@ -59,3 +60,19 @@ class SoledadSessionTest(AbstractLeapTest): # then instance.sync.assert_called_with() + + @patch('pixelated.bitmask_libraries.soledad.Soledad') + @patch('leap.common.events.client') + def test_register_token_error_handler(self, events_mock, soledad_mock): + instance = soledad_mock.return_value + instance.server_url = '/foo/bar' + register_mock = events_mock.register + register_mock.register.return_value = None + # when + SoledadSession(self.provider, 'any-passphrase', self.auth.token, self.auth.uuid) + + # then + used_arguments = register_mock.call_args + self.assertIsNotNone(used_arguments) + used_arguments = used_arguments[0] + self.assertEqual(used_arguments[0], events.SOLEDAD_INVALID_AUTH_TOKEN) -- cgit v1.2.3