summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-10-09 11:53:07 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-10-09 11:54:08 -0300
commit36b9261f609901b83da4f8915640eb6043530f01 (patch)
tree69e2406a52c81825dba2fab45d3e2c2b18a6cb70 /service
parent2897b27a7243681ebbec95c117887bdfc330b3a7 (diff)
adds a listener for SOLEDAD_INVALID_AUTH_TOKEN
--Issue #485
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/bitmask_libraries/soledad.py6
-rw-r--r--service/test/unit/bitmask_libraries/test_soledad.py17
2 files changed, 23 insertions, 0 deletions
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)