def test_success(self): site = mommy.make_one(Site) user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() login = create_login.result self.assertIsNotNone(login) self.assertEqual(LOGIN_CALL, login.status) self.assertEqual('hook', login.hook) db_login = Login.query().get() self.assertEqual(db_login.key, login.key) def neighbor(cls): DestinationsSearch.arc_class = cls search = DestinationsSearch(login) search.execute() self.assertEqual(1, len(search.result), cls) return search.result[0] n_user = neighbor(LoginUser) self.assertEqual(n_user.key, user.key) n_site = neighbor(LoginSite) self.assertEqual(n_site.key, site.key) login_status = neighbor(LoginStatusArc) self.assertEqual(LOGIN_CALL, login_status.label)
def test_success(self, hook='https://pswdless.appspot.com/foo', expected_query_string='?ticket=%s'): lg = Login(status=LOGIN_EMAIL, hook=hook) lg.put() cmd = cookie_facade.sign('ticket', lg.key.id()) cmd.execute() redirect_mock = Mock() validate_cmd = facade.validate_login_link(cmd.result, redirect_mock) validate_cmd.execute() self.assertDictEqual({}, validate_cmd.errors) login_db = validate_cmd.result self.assertEqual(lg.key, login_db.key) self.assertEqual(login_db.status, LOGIN_CLICK) search = LoginStatusArcSearch(login_db) search.execute() self.assertEqual(1, len(search.result)) lg_status = search.result[0] self.assertIsInstance(lg_status, LoginStatus) self.assertEqual(lg_status.label, LOGIN_CLICK) redirect_mock.assert_called_once_with(hook + (expected_query_string % lg.key.id()))
def _assert_succes_with_status(self, status): site = mommy.make_one(Site, domain='www.pswd.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() lg = Login.query().get() lg.status = status lg.put() validate_cmd = ValidateLoginCall(site.key.id(), site.token, 'http://www.pswd.com/pswdless', user.key.id()) validate_cmd.execute() self.assertDictEqual({}, validate_cmd.errors)
def test_success_after_one_hour(self): site = mommy.make_one(Site, domain='www.pswd.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() lg = Login.query().get() lg.creation = datetime.now() - timedelta(hours=1, minutes=1) lg.put() validate_cmd = ValidateLoginCall(site.key.id(), site.token, 'http://www.pswd.com/pswdless', user.key.id()) validate_cmd.execute() self.assertDictEqual({}, validate_cmd.errors)
def test_success(self): site = mommy.make_one(Site, domain='appspot.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) login.setup_locale = Mock() setup_task = facade.setup_login_task( str(site.key.id()), site.token, 'http://pswdless.appspot.com/return', str(user.key.id()), lang='pt_BR') task_obj = Mock() task_cls = Mock(return_value=task_obj) login.TaskQueueCommand = task_cls task_obj.commit = Mock(return_value=[]) setup_task.execute() lg = Login.query().get() login.setup_locale.assert_called_once_with('pt_BR') self.assertIsNotNone(lg) task_cls.assert_called_once_with(settings.TASK_HERO, router.to_path(task.send_login_email), params={ 'login_id': str(lg.key.id()), 'lang': 'pt_BR' }, countdown=4) task_obj.set_up.assert_called_once_with() task_obj.do_business.assert_called_once_with() task_obj.commit.assert_called_once_with() def neighbor(cls): DestinationsSearch.arc_class = cls # To do: removing this because can cause side effects search = DestinationsSearch(lg) search.execute() self.assertEqual(1, len(search.result), cls) return search.result[0] n_user = neighbor(LoginUser) self.assertEqual(n_user.key, user.key) n_site = neighbor(LoginSite) self.assertEqual(n_site.key, site.key) login_status = neighbor(LoginStatusArc) self.assertEqual(LOGIN_CALL, login_status.label)
def test_success(self): # Mocks site = Site(domain='pswdless.appspot.com', token='t') email = '*****@*****.**' user = mommy.make_one(MainUser, email=email) login = Login(status=LOGIN_CALL, hook='https://pswdless.appspot.com/foo') ndb.put_multi([site, user, login]) # Arcs ndb.put_multi([ LoginUser(origin=login.key, destination=user.key), LoginSite(origin=login.key, destination=site.key) ]) callback_flag = Mock() def callback(*args): callback_flag() zipped = zip([login, site, user], args) for expected, current in zipped: self.assertEqual(type(expected), type(current)) self.assertEqual(expected.key, current.key) send_email = facade.send_login_email(str(login.key.id()), callback) send_email.execute() # Login changes login_db = login.key.get() self.assertEqual(LOGIN_EMAIL, login_db.status) search = SingleLoginStatusArcSearch(login) login_status = search() self.assertIsInstance(login_status, LoginStatus) self.assertEqual(LOGIN_EMAIL, login_status.label) # Site User creation user_search = SingleSiteUserSearch(site) db_user = user_search() self.assertEqual(user.key, db_user.key) # Callback call callback_flag.assert_called_once_with()
def test_success(self): mail_stub = self.testbed.get_stub(testbed.MAIL_SERVICE_NAME) # Mocks email = '*****@*****.**' site = Site(domain='pswdless.appspot.com', token='t') user = mommy.save_one(MainUser, email=email) login = Login(status=LOGIN_CALL, hook='https://pswdless.appspot.com/foo') ndb.put_multi([site, user, login]) task._ = lambda s: s # Arcs ndb.put_multi([ LoginUser(origin=login.key, destination=user.key), LoginSite(origin=login.key, destination=site.key) ]) task.send_login_email(template.render, str(login.key.id()), 'pt_BR') messages = mail_stub.get_sent_messages(to='*****@*****.**') self.assertEqual(1, len(messages))
def test_success(self): site = mommy.make_one(Site, domain='appspot.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) login.setup_locale = Mock() setup_task = facade.setup_login_task(str(site.key.id()), site.token, 'http://pswdless.appspot.com/return', str(user.key.id()), lang='pt_BR') task_obj = Mock() task_cls = Mock(return_value=task_obj) login.TaskQueueCommand = task_cls task_obj.commit = Mock(return_value=[]) setup_task.execute() lg = Login.query().get() login.setup_locale.assert_called_once_with('pt_BR') self.assertIsNotNone(lg) task_cls.assert_called_once_with(settings.TASK_HERO, router.to_path(task.send_login_email), params={'login_id': str(lg.key.id()), 'lang': 'pt_BR'}, countdown=4) task_obj.set_up.assert_called_once_with() task_obj.do_business.assert_called_once_with() task_obj.commit.assert_called_once_with() def neighbor(cls): DestinationsSearch.arc_class = cls # To do: removing this because can cause side effects search = DestinationsSearch(lg) search.execute() self.assertEqual(1, len(search.result), cls) return search.result[0] n_user = neighbor(LoginUser) self.assertEqual(n_user.key, user.key) n_site = neighbor(LoginSite) self.assertEqual(n_site.key, site.key) login_status = neighbor(LoginStatusArc) self.assertEqual(LOGIN_CALL, login_status.label)
def _assert_wrong_status(self, status): login = Login(status=status, hook='https://pswdless.appspot.com/foo') login.put() cmd = cookie_facade.sign('ticket', login.key.id()) cmd.execute() self._assert_error(cmd.result)
def __init__(self, user, site, hook): super(CreateLogin, self).__init__() self.user = user self.site = site self.result = Login(hook=hook, status=LOGIN_CALL) self.login_status = LoginStatus(label=LOGIN_CALL)