summaryrefslogtreecommitdiff
path: root/service/test/unit/config/test_leap.py
diff options
context:
space:
mode:
authorNavaL <ayoyo@thoughtworks.com>2016-10-26 15:55:29 +0200
committerNavaL <ayoyo@thoughtworks.com>2016-10-28 18:02:25 +0200
commit423ca8f9fb7636b336b24ba28bde5d61538bf5fc (patch)
tree6d8f95fafe4f08b4ca557d52bc45d310fa8c37af /service/test/unit/config/test_leap.py
parent3df56a4f3c411c3bde51c88e6e0bf34d5e582119 (diff)
authentication now returns Authentication
leap session creation is only done post-interstitial and that logic is also extracted into its own class #795
Diffstat (limited to 'service/test/unit/config/test_leap.py')
-rw-r--r--service/test/unit/config/test_leap.py70
1 files changed, 68 insertions, 2 deletions
diff --git a/service/test/unit/config/test_leap.py b/service/test/unit/config/test_leap.py
index ce533c7f..8f582dd8 100644
--- a/service/test/unit/config/test_leap.py
+++ b/service/test/unit/config/test_leap.py
@@ -1,8 +1,8 @@
from leap.soledad.common.errors import InvalidAuthTokenError
-from mock import MagicMock, patch
+from mock import MagicMock, patch, Mock
from twisted.trial import unittest
from twisted.internet import defer
-from pixelated.config.leap import create_leap_session
+from pixelated.config.leap import create_leap_session, BootstrapUserServices
from pixelated.config.sessions import LeapSessionFactory, SessionCache
@@ -35,3 +35,69 @@ class TestAuth(unittest.TestCase):
self.assertFalse(session.first_required_sync.called)
self.assertEqual(session, returned_session)
+
+
+class TestUserBootstrap(unittest.TestCase):
+
+ def setUp(self):
+ self._service_factory = Mock()
+ self._provider = Mock()
+ self._user_bootstrap = BootstrapUserServices(self._service_factory, self._provider)
+
+ username = 'ayoyo'
+ password = 'ayoyo_password'
+ self.username = username
+ self.password = password
+
+ user_auth = Mock()
+ user_auth.username = username
+ self.uuid = 'some_user_uuid'
+ user_auth.uuid = self.uuid
+ self.user_auth = user_auth
+
+ leap_session = Mock()
+ leap_session.user_auth = user_auth
+ leap_session.fresh_account = False
+ self.leap_session = leap_session
+
+ @patch('pixelated.config.leap.create_leap_session')
+ def test_should_create_leap_session(self, mock_create_leap_session):
+ mock_create_leap_session.return_value = self.leap_session
+ self._service_factory.has_session.return_value = False
+
+ self._user_bootstrap.setup(self.user_auth, self.password)
+
+ mock_create_leap_session.called_once_with(self._provider, self.username, self.password, self.user_auth)
+
+ @patch('pixelated.config.leap.create_leap_session')
+ def test_should_setup_user_services_and_map_email(self, mock_create_leap_session):
+ mock_create_leap_session.return_value = self.leap_session
+ self._service_factory.has_session.return_value = False
+
+ self._user_bootstrap.setup(self.user_auth, self.password)
+
+ self._service_factory.create_services_from.assert_called_once_with(self.leap_session)
+ self._service_factory.map_email.assert_called_once_with(self.username, self.uuid)
+
+ @patch('pixelated.config.leap.create_leap_session')
+ def test_should_not_user_services_if_there_is_already_a_session(self, mock_create_leap_session):
+ mock_create_leap_session.return_value = self.leap_session
+ self._service_factory.has_session.return_value = True
+
+ self._user_bootstrap.setup(self.user_auth, self.password)
+
+ self.assertFalse(self._service_factory.create_services_from.called)
+
+ @patch('pixelated.config.leap.add_welcome_mail')
+ @patch('pixelated.config.leap.create_leap_session')
+ def test_should_add_welcome_email_on_a_fresh_account(self, mock_create_leap_session, mock_add_welcome_email):
+ self.leap_session.fresh_account = True
+ mail_store = Mock()
+ self.leap_session.mail_store = mail_store
+ mock_create_leap_session.return_value = self.leap_session
+ self._service_factory.has_session.return_value = False
+ some_language = 'en-US'
+
+ self._user_bootstrap.setup(self.user_auth, self.password, '')
+
+ mock_add_welcome_email.called_once_with(mail_store, some_language)