From 423ca8f9fb7636b336b24ba28bde5d61538bf5fc Mon Sep 17 00:00:00 2001 From: NavaL Date: Wed, 26 Oct 2016 15:55:29 +0200 Subject: authentication now returns Authentication leap session creation is only done post-interstitial and that logic is also extracted into its own class #795 --- service/test/unit/config/test_leap.py | 70 ++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) (limited to 'service/test/unit/config/test_leap.py') 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) -- cgit v1.2.3