def do_business(self): super(PasswordlessDetailCheck, self).do_business() if not self.errors: app = self.result self.result = None fetch_cmd = UrlFetchCommand(self.detail_url, {'ticket': self.ticket, 'app_id': app.app_id, 'token': app.token}, 'POST').execute() self.errors.update(fetch_cmd.errors) if not self.errors: dct = json.loads(fetch_cmd.result.content) cmd_parallel = CommandParallel(GetMainUserByEmail(dct['email']), GetPasswordlessUser(dct['id'])) cmd_parallel.execute() main_user, passwordless_user = cmd_parallel[0].result, cmd_parallel[1].result if passwordless_user: main_user = MainUserSearch(passwordless_user).execute().result elif main_user: passwordless_user_key = PasswordlessUser(external_id=dct['id']).put() self._to_commit = ExternalToMainUser(origin=passwordless_user_key, destination=main_user.key) else: main_user = MainUser(name=dct['email'], email=dct['email']) passwordless_user = PasswordlessUser(external_id=dct['id']) ndb.put_multi([main_user, passwordless_user]) self._to_commit = ExternalToMainUser(origin=passwordless_user.key, destination=main_user.key) self.result = main_user
def test_success_with_no_user(self, fetch_command_cls, write_cookie): app, fetch_cmd_obj, response = self.setup_base_mock(fetch_command_cls) main_user = facade.login_passwordless('0123', response, 'https://pswdless.appspot.com/rest/detail').execute().result self.assertIsNotNone(main_user) self.assertEqual('*****@*****.**', main_user.email) self.assertEqual('*****@*****.**', main_user.name) self.assert_base_execution(app, fetch_cmd_obj, fetch_command_cls, main_user, PasswordlessUser.query().get(), write_cookie, response)
def test_success_with_main_user(self, fetch_command_cls, write_cookie): app, fetch_cmd_obj, response = self.setup_base_mock(fetch_command_cls) main_user_on_db = mommy.save_one(MainUser, email="*****@*****.**") main_user = facade.login_passwordless('0123', response, 'https://pswdless.appspot.com/rest/detail').execute().result self.assertEqual(main_user_on_db, main_user) p_user = PasswordlessUser.query().get() self.assertIsNotNone(p_user) self.assert_base_execution(app, fetch_cmd_obj, fetch_command_cls, main_user, p_user, write_cookie, response)
def test_success(self, fetch_command_cls): app = _setup_app_data() fetch_cmd_obj = Mock() fetch_command_cls.return_value = fetch_cmd_obj facade.send_passwordless_login_link('*****@*****.**', 'http://www.yoursite/passworless/login', 'pt_BR').execute() main_user = GetMainUserByEmail('*****@*****.**').execute().result self.assertIsNone(main_user) self.assertIsNone(PasswordlessUser.query().get()) fetch_command_cls.assert_called_once_with('https://pswdless.appspot.com/rest/login', {'email': '*****@*****.**', 'app_id': app.app_id, 'token': app.token, 'hook': 'http://www.yoursite/passworless/login', 'lang': 'pt_BR'}, method='POST') fetch_cmd_obj.execute.assert_called_once_with()
def test_success_with_passwordless_user(self, fetch_command_cls, write_cookie): app, fetch_cmd_obj, response = self.setup_base_mock(fetch_command_cls) main_user_on_db = mommy.save_one(MainUser, email="*****@*****.**") p_user_on_db = mommy.save_one(PasswordlessUser, external_id="654321") ExternalToMainUser(origin=p_user_on_db.key, destination=main_user_on_db.key).put() main_user = facade.login_passwordless('0123', response, 'https://pswdless.appspot.com/rest/detail').execute().result self.assertEqual(main_user_on_db, main_user) p_user = PasswordlessUser.query().get() self.assertEqual(p_user_on_db, p_user) self.assert_base_execution(app, fetch_cmd_obj, fetch_command_cls, main_user, p_user, write_cookie, response)
def __init__(self, passwordless_id): super(GetPasswordlessUser, self).__init__(PasswordlessUser.query_by_external_id(passwordless_id), 1)