def test_save(self): facade.save_user_cmd('*****@*****.**', 'Renzo Nuccitelli', locale='pt_BR', timezone='America/Sao_Paulo')() user = facade.get_user_by_email('*****@*****.**')() self.assertEqual('*****@*****.**', user.email) self.assertEqual('Renzo Nuccitelli', user.name) self.assertEqual('pt_BR', user.locale) self.assertEqual('America/Sao_Paulo', user.timezone) self.assertListEqual([''], user.groups)
def test_google_user_logged_for_already_email_registered_user(self, send_login_mock): email = '*****@*****.**' self.set_current_user(user_email=email) facade.save_or_update_passwordless_app_data('id', 'token').execute() facade.save_user_cmd(email).execute() response = google.index(Mock()) self.assertEqual(email, send_login_mock.call_args[0][0]) self.assert_can_render(response)
def test_google_user_logged_for_already_email_registered_user( self, send_login_mock): email = '*****@*****.**' self.set_current_user(user_email=email) facade.save_or_update_passwordless_app_data('id', 'token').execute() facade.save_user_cmd(email).execute() response = google.index(Mock()) self.assertEqual(email, send_login_mock.call_args[0][0]) self.assert_can_render(response)
def test_find_user_without_group(self): users = facade.find_users_by_email_and_group()() self.assertListEqual([], users) saved_users = [] saved_users.append(facade.save_user_cmd('*****@*****.**', 'a')()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'b', groups=['G1'])()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'c', groups=['G2'])()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'c', groups=['G1', 'G2'])()) users = facade.find_users_by_email_and_group()() self.assertListEqual(saved_users[:1], users) users = facade.find_users_by_email_and_group('a')() self.assertListEqual(saved_users[:1], users, users)
def test_save_error(self): cmd = facade.save_user_cmd(None) self.assertRaises(CommandExecutionException, cmd) self.assertTrue('email' in cmd.errors) cmd = facade.save_user_cmd('') self.assertRaises(CommandExecutionException, cmd) self.assertTrue('email' in cmd.errors) cmd = facade.save_user_cmd('asas') self.assertRaises(CommandExecutionException, cmd) self.assertTrue('email' in cmd.errors)
def test_facebook_login_for_already_email_registered_user(self, send_login_mock, login_facebook_mock): email = '*****@*****.**' cmd_mock = Mock() cmd_mock.main_user_from_email.email = email login_facebook_mock.return_value = cmd_mock token = 'token' facade.save_or_update_passwordless_app_data('id', token).execute() facade.save_user_cmd(email).execute() resp_mock = Mock() response = facebook.index(resp_mock, token) login_facebook_mock.assert_called_once_with(token, resp_mock) self.assertEqual(email, send_login_mock.call_args[0][0]) self.assert_can_render(response)
def test_facebook_login_for_already_email_registered_user( self, send_login_mock, login_facebook_mock): email = '*****@*****.**' cmd_mock = Mock() cmd_mock.main_user_from_email.email = email login_facebook_mock.return_value = cmd_mock token = 'token' facade.save_or_update_passwordless_app_data('id', token).execute() facade.save_user_cmd(email).execute() resp_mock = Mock() response = facebook.index(resp_mock, token) login_facebook_mock.assert_called_once_with(token, resp_mock) self.assertEqual(email, send_login_mock.call_args[0][0]) self.assert_can_render(response)
def do_business(self): super(ProcessExternalPaymentCmd, self).do_business() dct = self.__transaction_dct if self.result: self.result.status = XML_STATUS_TO_MODEL_STATUS.get(dct['transaction']['status']) cmd = UpdatePaymentAndSaveLog(self.result) cmd.execute() else: self.result = PagSegPayment(code=dct['transaction']['code'], status=XML_STATUS_TO_MODEL_STATUS.get(dct['transaction']['status']), total=dct['transaction']['grossAmount'], net_amount=dct['transaction']['netAmount']) payment_key = self.result.put() def create_item_cmd(item): return _SimpleSave(PagSegItem(description=item['description'], price=Decimal(item['amount']), quantity=int(item['quantity']))) items = dct['transaction']['items']['item'] if isinstance(items, dict): items = [items] items_cmd = [CreatePaymentToItem(payment_key, create_item_cmd(item)) for item in items] cmd = CommandParallel( CreatePagSegPaymentToLog(payment_key, _SimpleSave(PagSegLog(status=self.result.status))), *items_cmd) sender = dct['transaction'].get('sender') if sender: user = facade.get_user_by_email(sender['email'])() if user is None: user = facade.save_user_cmd(sender['email'], sender['name'])() cmd.append(SaveToPayment(user,payment_key)) cmd.execute()
def test_find_user_with_group(self): users = facade.find_users_by_email_and_group(group='G1')() self.assertListEqual([], users) saved_users = [] saved_users.append(facade.save_user_cmd('*****@*****.**', 'a')()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'b', groups=['G1'])()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'c', groups=['G2'])()) saved_users.append(facade.save_user_cmd('*****@*****.**', 'd', groups=['G1', 'G2'])()) users = facade.find_users_by_email_and_group(group='G1')() self.assertListEqual(saved_users[1::2], users) users = facade.find_users_by_email_and_group(group='G2')() self.assertListEqual(saved_users[2:], users) users = facade.find_users_by_email_and_group('b@', group='G2')() self.assertListEqual([], users) users = facade.find_users_by_email_and_group('c@', group='G2')() self.assertListEqual(saved_users[2:3], users)
def test_update_user(self): email = '*****@*****.**' facade.save_user_cmd(email).execute() user = facade.get_user_by_email(email)() self.assertListEqual([''], user.groups) ADMIN = 'ADMIN' admin.update(str(user.key.id()), [ADMIN]) user = user.key.get() self.assertListEqual([ADMIN], user.groups) MANAGER = 'MANAGER' admin.update(str(user.key.id()), [ADMIN, MANAGER]) user = user.key.get() self.assertListEqual([ADMIN, MANAGER], user.groups)
def do_business(self): super(FindOrCreateUser, self).do_business() user = self.result if not user: try: cmd = facade.save_user_cmd(self.email, self.email) self.result = cmd() except CommandExecutionException: self.errors.update(cmd.errors)
def save(**profile_properties): cmd = profile_facade.save_profile_cmd(**profile_properties) try: p = cmd() except CommandExecutionException: context = {'errors': cmd.errors, 'profile': profile_properties} return TemplateResponse(context, 'profiles/profile_form.html') s = facade.save_user_cmd(p.email, p.name, p.groups) return RedirectResponse(router.to_path(profiles))
def test_detail(self): resp = Mock() user = permission_facade.save_user_cmd('*****@*****.**', 'Renzo')() site = mommy.save_one(Site, domain='pswdless.appspost.com') login = mommy.save_one(Login, status=LOGIN_CLICK, hook='https://pswdless.appspost.com') CreateLoginArc(login, user)() response = rest.detail(resp, app_id=site.key.id(), token=site.token, ticket=login.key.id()) status = login.key.get().status self.assertEqual(LOGIN_DETAIL, status) self.assertNotEqual(400, resp.status_code) self.assert_can_serialize_as_json(response)
def test_edit(self): email = '*****@*****.**' initial_name = 'initial_name' user = facade.save_user_cmd(email, initial_name)() self.assertEqual(initial_name, user.name) self.assertEqual(settings.DEFAULT_LOCALE, user.locale) self.assertEqual(settings.DEFAULT_TIMEZONE, user.timezone) edited_name = 'edited_name' locale = 'pt_BR' timezone = 'America/Sao_Paulo' response = account.edit(user, edited_name, locale, timezone) user = user.key.get() self.assertIsInstance(response, RedirectResponse) self.assertEqual(edited_name, user.name) self.assertEqual(locale, user.locale) self.assertEqual(timezone, user.timezone)
def do_business(self): super(ProcessExternalPaymentCmd, self).do_business() dct = self.__transaction_dct if self.result: self.result.status = XML_STATUS_TO_MODEL_STATUS.get( dct['transaction']['status']) cmd = UpdatePaymentAndSaveLog(self.result) cmd.execute() else: self.result = PagSegPayment( code=dct['transaction']['code'], status=XML_STATUS_TO_MODEL_STATUS.get( dct['transaction']['status']), total=dct['transaction']['grossAmount'], net_amount=dct['transaction']['netAmount']) payment_key = self.result.put() def create_item_cmd(item): return _SimpleSave( PagSegItem(description=item['description'], price=Decimal(item['amount']), quantity=int(item['quantity']))) items = dct['transaction']['items']['item'] if isinstance(items, dict): items = [items] items_cmd = [ CreatePaymentToItem(payment_key, create_item_cmd(item)) for item in items ] cmd = CommandParallel( CreatePagSegPaymentToLog( payment_key, _SimpleSave(PagSegLog(status=self.result.status))), *items_cmd) sender = dct['transaction'].get('sender') if sender: user = facade.get_user_by_email(sender['email'])() if user is None: user = facade.save_user_cmd(sender['email'], sender['name'])() cmd.append(SaveToPayment(user, payment_key)) cmd.execute()
def test_list_users(self): email = '*****@*****.**' facade.save_user_cmd(email).execute() response = admin.list_users() self.assert_can_serialize_as_json(response) self.assertEqual(email, response.context['users'][0]['email'])
def test_save_when_previous_command_does_not_find_user(self): cmd = CommandSequential(facade.get_user_by_email('*****@*****.**'), facade.save_user_cmd('*****@*****.**')) user = cmd() self.assertIsNotNone(user) self.assertEqual(user, MainUser.query_email('*****@*****.**').get()) self.assertEqual(1, len(MainUser.query().fetch()))
def test_save_when_previous_command_does_find_user(self): facade.save_user_cmd('*****@*****.**')() # save user before executing self.test_save_when_previous_command_does_not_find_user()
def test_succes(self): saved_user = facade.save_user_cmd('*****@*****.**', 'foo', groups=['ADMIN'])() self.assertEqual(MainUser.query_email('*****@*****.**').get(), saved_user)
def test_index(self): email = '*****@*****.**' user = facade.save_user_cmd(email)() response = account.index(user) self.assert_can_render(response)