summaryrefslogtreecommitdiff
path: root/service/test/unit/config
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
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')
-rw-r--r--service/test/unit/config/test_leap.py70
-rw-r--r--service/test/unit/config/test_services.py58
2 files changed, 122 insertions, 6 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)
diff --git a/service/test/unit/config/test_services.py b/service/test/unit/config/test_services.py
index 8277c919..ed221261 100644
--- a/service/test/unit/config/test_services.py
+++ b/service/test/unit/config/test_services.py
@@ -15,6 +15,7 @@
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import unittest
+from mock import Mock, ANY, patch
from mockito import mock, verify
from pixelated.config.services import Services, ServicesFactory
@@ -36,9 +37,58 @@ class ServicesTest(unittest.TestCase):
class ServicesFactoryTest(unittest.TestCase):
+ def setUp(self):
+ self.service_factory = ServicesFactory(Mock())
+
+ def test_users_has_no_default_sessions(self):
+ user_id = ANY
+ self.assertFalse(self.service_factory.has_session(user_id))
+
+ def test_add_user_sessions(self):
+ user_id = 'irrelevant'
+ some_service = Mock()
+
+ self.service_factory.add_session(user_id, some_service)
+
+ self.assertTrue(self.service_factory.has_session(user_id))
+ self.assertEqual(some_service, self.service_factory.services(user_id))
+
def test_online_sessions_counts_logged_in_users(self):
- service_factory = ServicesFactory(mock())
- service_factory.add_session('some_id1', mock())
- service_factory.add_session('some_id2', mock())
+ self.service_factory.add_session('some_id1', mock())
+ self.service_factory.add_session('some_id2', mock())
+
+ self.assertEqual(2, self.service_factory.online_sessions())
+
+ @patch('pixelated.config.services.Services.setup')
+ def test_create_services_from_leap_session_sets_up_services_and_add_a_user_session(self, mock_setup_services):
+ leap_session = Mock()
+ user_id = 'irrelevant'
+ leap_session.user_auth.uuid = user_id
+
+ self.service_factory.create_services_from(leap_session)
+
+ self.assertTrue(mock_setup_services.called)
+ self.assertTrue(self.service_factory.has_session(user_id))
+
+ def test_destroy_session_using_close_user_services_and_deletes_sessions(self):
+ user_id = 'irrelevant'
+ some_service = Mock()
+ self.service_factory.add_session(user_id, some_service)
+
+ self.service_factory.destroy_session(user_id)
+
+ self.assertFalse(self.service_factory.has_session(user_id))
+ self.assertTrue(some_service.close.called)
+
+ def test_sessions_can_be_destroyed_using_email_rather_than_uuid(self):
+ user_id = 'irrelevant'
+ username = 'haha'
+ email = '%s@ha.ha' % username
+ some_service = Mock()
+ self.service_factory.add_session(user_id, some_service)
+ self.service_factory.map_email(username, user_id)
+
+ self.service_factory.destroy_session(email, using_email=True)
- self.assertEqual(2, service_factory.online_sessions())
+ self.assertFalse(self.service_factory.has_session(user_id))
+ self.assertTrue(some_service.close.called)