예제 #1
0
def index(_resp, ret_path="/"):
    user = users.get_current_user()
    if user:
        cmd = facade.login_google(user, _resp).execute()
        if cmd.pending_link:
            pending_path = router.to_path(pending.index, cmd.pending_link.key.id())
            facade.send_passwordless_login_link(user.email(), settings.APP_URL + pending_path).execute()
            return TemplateResponse({"provider": "Google", "email": user.email()}, "login/pending.html")
    return RedirectResponse(ret_path)
 def test_google_user_logged_for_the_first_time(self):
     google_account_user = Mock()
     google_account_user.user_id = lambda: '123'
     google_account_user.email = lambda: '*****@*****.**'
     google_account_user.nickname = lambda: 'foo'
     user = facade.login_google(google_account_user, Mock()).execute().result
     self.assertEqual('*****@*****.**', user.email)
     self.assertEqual('foo', user.name)
     self.assertEqual(MainUser.query().get(), user)
     google_user = OriginsSearch(ExternalToMainUser, user).execute().result[0]
     self.assertEqual('123', google_user.google_id)
예제 #3
0
파일: google.py 프로젝트: renzon/livrogae
def index(_handler, _resp, _write_tmpl, ret_path="/"):
    usuario_google = users.get_current_user()
    if usuario_google:
        cmd = facade.login_google(usuario_google, _resp).execute()
        if cmd.pending_link:
            pendente_path = router.to_path(pendente.index, cmd.pending_link.key.id())
            facade.send_passwordless_login_link(
                usuario_google.email(), "https://livrogae.appspot.com" + pendente_path, "pt_BR"
            ).execute()
            _write_tmpl("login/pendente.html", {"provedor": "Google", "email": usuario_google.email()})
            return
    _handler.redirect(ret_path)
예제 #4
0
def index(_resp, ret_path='/'):
    user = users.get_current_user()
    if user:
        cmd = facade.login_google(user, _resp).execute()
        if cmd.pending_link:
            pending_path = router.to_path(pending.index, cmd.pending_link.key.id())
            facade.send_passwordless_login_link(user.email(),
                                                settings.APP_URL + pending_path).execute()
            TemplateResponse({'provider': 'Google', 'email': user.email()}, 'login/pending.html')
        else:
            main_user=cmd.main_user_from_external
            user_document=get_or_create_user_document(main_user)
    return RedirectResponse(ret_path)
    def test_google_user_logged_for_the_second_time(self):
        google_account_user = Mock()
        google_account_user.user_id = lambda: '123'
        g_key = GoogleUser(google_id='123').put()
        main_user = MainUser(name='foo', email='*****@*****.**')
        main_user.put()
        ExternalToMainUser(origin=g_key, destination=main_user.key.id()).put()

        user = facade.login_google(google_account_user, Mock()).execute().result
        self.assertEqual('*****@*****.**', user.email)
        self.assertEqual('foo', user.name)
        self.assertEqual(main_user, user)
        self.assertEqual(1, len(GoogleUser.query().fetch()))
        self.assertEqual(1, len(MainUser.query().fetch()))
예제 #6
0
    def test_google_user_logged_for_the_first_time_with_no_conflict(self, log_main_user_in):
        google_account_user = self.mock_google_account_user()
        response = Mock()

        cmd = facade.login_google(google_account_user, response).execute()

        self.assertTrue(cmd.result)
        user = cmd.main_user_from_external
        self.assertEqual('*****@*****.**', user.email)
        self.assertEqual('foo', user.name)
        self.assertEqual(MainUser.query().get(), user)
        google_user = ExternalUserSearch(user).execute().result[0]
        self.assertEqual('123', google_user.external_id)
        log_main_user_in.assert_called_once_with(user, response, 'userck')
        self.assertIsNone(cmd.pending_link)
예제 #7
0
    def test_google_user_logged_for_the_first_time_with_conflict(self, log_main_user_in):
        google_account_user = self.mock_google_account_user()
        main_user = mommy.save_one(MainUser, email='*****@*****.**')

        cmd = facade.login_google(google_account_user, Mock()).execute()
        self.assertFalse(cmd.result)
        self.assertIsNone(cmd.main_user_from_external)

        self.assertEqual(1, len(GoogleUser.query().fetch()))
        self.assertEqual(1, len(MainUser.query().fetch()))
        self.assertIsNotNone(cmd.pending_link)
        self.assertEqual(PendingExternalToMainUser.query().get(), cmd.pending_link)
        self.assertEqual(cmd.external_user.key, cmd.pending_link.external_user)
        self.assertEqual(main_user.key, cmd.pending_link.main_user)
        self.assertEqual('123', cmd.external_user.external_id)
        self.assertFalse(log_main_user_in.called)
예제 #8
0
    def test_google_user_logged_for_the_second_time(self, log_main_user_in):
        google_account_user = self.mock_google_account_user()
        g_key = GoogleUser(external_id='123').put()
        main_user = MainUser(name='foo', email='*****@*****.**')
        main_user.put()
        ExternalToMainUser(origin=g_key, destination=main_user.key.id()).put()

        response = Mock()
        cmd = facade.login_google(google_account_user, response).execute()
        self.assertTrue(cmd.result)

        user = cmd.main_user_from_external
        self.assertEqual('*****@*****.**', user.email)
        self.assertEqual('foo', user.name)
        self.assertEqual(main_user, user)
        self.assertEqual(1, len(GoogleUser.query().fetch()))
        self.assertEqual(1, len(MainUser.query().fetch()))
        self.assertIsNone(cmd.pending_link)
        log_main_user_in.assert_called_once_with(user, response, 'userck')
 def test_no_google_user_logged(self):
     user = facade.login_google(None, Mock()).execute().result
     self.assertIsNone(user)