diff --git a/bt5/erp5_oauth_google_login/TestTemplateItem/portal_components/test.erp5.testGoogleLogin.py b/bt5/erp5_oauth_google_login/TestTemplateItem/portal_components/test.erp5.testGoogleLogin.py index 3607b7ec4c1d11686ffd8641c8fea7a568719233..f4eafea66ae5708582609178ad227b3f35e05b56 100644 --- a/bt5/erp5_oauth_google_login/TestTemplateItem/portal_components/test.erp5.testGoogleLogin.py +++ b/bt5/erp5_oauth_google_login/TestTemplateItem/portal_components/test.erp5.testGoogleLogin.py @@ -136,6 +136,49 @@ class TestGoogleLogin(ERP5TypeTestCase): self.assertNotIn("secret_key=", location) self.assertIn("ERP5Site_receiveGoogleCallback", location) + def test_existing_user(self): + self.login() + person = self.portal.person_module.newContent( + portal_type='Person', + ) + person.newContent( + portal_type='Google Login', + reference=getUserId(None) + ).validate() + person.newContent(portal_type='Assignment').open() + self.tic() + self.logout() + + request = self.portal.REQUEST + response = request.RESPONSE + with mock.patch( + 'erp5.component.extension.GoogleLoginUtility.getAccessTokenFromCode', + side_effect=getAccessTokenFromCode, + ) as getAccessTokenFromCode_mock, \ + mock.patch( + 'erp5.component.extension.GoogleLoginUtility.getUserEntry', + side_effect=getUserEntry + ) as getUserEntry_mock: + getAccessTokenFromCode_mock.func_code = getAccessTokenFromCode.func_code + getUserEntry_mock.func_code = getUserEntry.func_code + self.portal.ERP5Site_receiveGoogleCallback(code=CODE) + getAccessTokenFromCode_mock.assert_called_once() + getUserEntry_mock.assert_called_once() + + request["__ac_google_hash"] = response.cookies["__ac_google_hash"]["value"] + + credentials = self.portal.acl_users.erp5_google_extraction.extractCredentials(request) + self.assertEqual( + 'Google Login', + credentials['login_portal_type']) + self.assertEqual( + getUserId(None), + credentials['external_login']) + + user_id, login = self.portal.acl_users.erp5_login_users.authenticateCredentials(credentials) + self.assertEqual(person.getUserId(), user_id) + self.assertEqual(getUserId(None), login) + def test_auth_cookie(self): request = self.portal.REQUEST response = request.RESPONSE