예제 #1
0
 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)
예제 #2
0
파일: google.py 프로젝트: Marrary2/tekton
 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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
    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)
예제 #6
0
파일: facebook.py 프로젝트: Marrary2/tekton
 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)
예제 #7
0
 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)
예제 #8
0
    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()
예제 #9
0
 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)
예제 #10
0
    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)
예제 #11
0
파일: users.py 프로젝트: renzon/pswdless
 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)
예제 #12
0
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))
예제 #13
0
 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)
예제 #14
0
 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)
예제 #15
0
 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)
예제 #16
0
    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()
예제 #17
0
 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'])
예제 #18
0
 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()))
예제 #19
0
 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()
예제 #20
0
 def test_succes(self):
     saved_user = facade.save_user_cmd('*****@*****.**', 'foo', groups=['ADMIN'])()
     self.assertEqual(MainUser.query_email('*****@*****.**').get(), saved_user)
예제 #21
0
 def test_index(self):
     email = '*****@*****.**'
     user = facade.save_user_cmd(email)()
     response = account.index(user)
     self.assert_can_render(response)