def test_settings_view(self): # Create a remove account (linked account) from invenio.modules.oauthclient.models import RemoteAccount RemoteAccount.create(1, 'testid', None) self.assert401(self.client.get(url_for('oauthclient_settings.index'))) self.login("admin", "") res = self.client.get(url_for('oauthclient_settings.index')) self.assert200(res) assert 'MyLinkedTestAccount' in res.data assert url_for('oauthclient.disconnect', remote_app='test') in res.data assert url_for('oauthclient.login', remote_app='full') in res.data assert url_for('oauthclient.login', remote_app='test_invalid') in \ res.data
def test_settings_view(self): # Create a remove account (linked account) from invenio.modules.oauthclient.models import RemoteAccount RemoteAccount.create(1, 'testid', None) self.assert401(self.client.get(url_for('oauthclient_settings.index'), follow_redirects=True)) self.login("admin", "") res = self.client.get(url_for('oauthclient_settings.index')) self.assert200(res) assert 'MyLinkedTestAccount' in res.data assert url_for('oauthclient.disconnect', remote_app='test') in res.data assert url_for('oauthclient.login', remote_app='full') in res.data assert url_for('oauthclient.login', remote_app='test_invalid') in \ res.data
def disconnect_handler(remote, *args, **kwargs): """Handle unlinking of remote account.""" from invenio.modules.oauthclient.utils import oauth_unlink_external_id from invenio.modules.oauthclient.models import RemoteAccount if not current_user.is_authenticated(): return current_app.login_manager.unauthorized() account = RemoteAccount.get(user_id=current_user.get_id(), client_id=remote.consumer_key) orcid = account.extra_data.get('orcid') if orcid: oauth_unlink_external_id(dict(id=orcid, method='orcid')) if account: account.delete() return redirect(url_for('oauthclient_settings.index'))
def get_account(user_id=None): """ Retrieve linked GitHub account """ return RemoteAccount.get(user_id or current_user.get_id(), get_client_id())