def get_token(user_id=None): """ Retrieve token for linked GitHub account """ session_token = None if user_id is None: session_token = token_getter(get_remote()) if session_token: token = RemoteToken.get(current_user.get_id(), get_client_id(), access_token=session_token[0]) return token return None
def get_token(user_id=None): """ Retrieve token for linked GitHub account """ session_token = None if user_id is None: session_token = token_getter(get_remote()) if session_token: token = RemoteToken.get( current_user.get_id(), get_client_id(), access_token=session_token[0] ) return token return None
def test_token_getter_setter(self, save_session): from invenio.modules.oauthclient.models import RemoteToken from invenio.modules.oauthclient.handlers import token_getter from invenio.modules.oauthclient.client import oauth user = MagicMock() user.get_id = MagicMock(return_value=1) user.is_authenticated = MagicMock(return_value=True) with patch('flask.ext.login._get_user', return_value=user): with self.app.test_client() as c: # First call login to be redirected res = c.get(url_for("oauthclient.login", remote_app='full')) assert res.status_code == 302 assert res.location.startswith( oauth.remote_apps['full'].authorize_url ) # Mock resposen class self.mock_response(app='full') # Imitate that the user authorized our request in the remote # application. c.get(url_for( "oauthclient.authorized", remote_app='full', code='test', )) # Assert if every is as it should be. assert session['oauth_token_full'] == ('test_access_token', '') t = RemoteToken.get(1, "fullid") assert t.remote_account.client_id == 'fullid' assert t.access_token == 'test_access_token' assert RemoteToken.query.count() == 1 self.mock_response(app='full', data={ "access_token": "new_access_token", "scope": "", "token_type": "bearer" }) c.get(url_for( "oauthclient.authorized", remote_app='full', code='test', )) t = RemoteToken.get(1, "fullid") assert t.access_token == 'new_access_token' assert RemoteToken.query.count() == 1 val = token_getter(oauth.remote_apps['full']) assert val == ('new_access_token', '') # Disconnect account res = c.get(url_for( "oauthclient.disconnect", remote_app='full', )) assert res.status_code == 302 assert res.location.endswith( url_for('oauthclient_settings.index') ) # Assert that remote account have been removed. t = RemoteToken.get(1, "fullid") assert t is None
def test_token_getter_setter(self, session, save_session): from invenio.modules.oauthclient.models import RemoteToken from invenio.modules.oauthclient.handlers import token_getter from invenio.modules.oauthclient.client import oauth # Mock user user = MagicMock() user.get_id = MagicMock(return_value=1) user.is_authenticated = MagicMock(return_value=True) # Mock session id session.sid = '1234' with patch('flask_login._get_user', return_value=user): with self.app.test_client() as c: # First call login to be redirected res = c.get(url_for("oauthclient.login", remote_app='full')) assert res.status_code == 302 assert res.location.startswith( oauth.remote_apps['full'].authorize_url ) state = parse_qs(urlparse(res.location).query)['state'][0] # Mock resposen class self.mock_response(app='full') # Imitate that the user authorized our request in the remote # application. c.get(url_for( "oauthclient.authorized", remote_app='full', code='test', state=state, )) # Assert if everything is as it should be. from flask import session as flask_session assert flask_session['oauth_token_full'] == \ ('test_access_token', '') t = RemoteToken.get(1, "fullid") assert t.remote_account.client_id == 'fullid' assert t.access_token == 'test_access_token' assert RemoteToken.query.count() == 1 # Mock a new authorized request self.mock_response(app='full', data={ "access_token": "new_access_token", "scope": "", "token_type": "bearer" }) c.get(url_for( "oauthclient.authorized", remote_app='full', code='test', state=state )) t = RemoteToken.get(1, "fullid") assert t.access_token == 'new_access_token' assert RemoteToken.query.count() == 1 val = token_getter(oauth.remote_apps['full']) assert val == ('new_access_token', '') # Disconnect account res = c.get(url_for( "oauthclient.disconnect", remote_app='full', )) assert res.status_code == 302 assert res.location.endswith( url_for('oauthclient_settings.index') ) # Assert that remote account have been removed. t = RemoteToken.get(1, "fullid") assert t is None