def test_oauth2_fetch_access_token(self):
     url = 'https://example.com/token'
     token = get_bearer_token()
     client = OAuthClient(client_id='foo', access_token_url=url)
     client.session.send = mock_json_response(token)
     self.assertEqual(client.fetch_access_token(), token)
     self.assertEqual(client.fetch_access_token(url), token)
示例#2
0
    def test_oauth1_realms(self):
        def save_request_token(token):
            self.assertIn('oauth_token', token)

        def fake_send(sess, req, **kwargs):
            auth = req.headers['Authorization']
            self.assertIn('realm', auth)
            resp = mock.MagicMock()
            resp.cookies = []
            resp.text = 'oauth_token=foo'
            resp.status_code = 200
            return resp

        with mock.patch('requests.sessions.Session.send', fake_send):
            client = OAuthClient('foo',
                                 request_token_url='https://a.com/req',
                                 request_token_params={'realm': 'email'},
                                 authorize_url='https://a.com/auth')

            uri, state = client.generate_authorize_redirect(
                'https://b.com/bar', save_request_token)
            self.assertIsNone(state)
            self.assertIn('oauth_token=foo', uri)

            client.request_token_params = {'realm': ['email', 'profile']}
            uri, state = client.generate_authorize_redirect(
                'https://b.com/bar', save_request_token)
            self.assertIsNone(state)
            self.assertIn('oauth_token=foo', uri)
示例#3
0
 def test_request_without_token(self):
     with mock.patch('requests.sessions.Session.send') as send:
         send.return_value = mock_send_value({'name': 'a'})
         client = OAuthClient(client_id='foo')
         try:
             client.get('https://i.b/user')
         except OAuthError as exc:
             self.assertEqual('missing_token', exc.error)
示例#4
0
 def test_oauth2_fetch_access_token(self):
     url = 'https://example.com/token'
     token = get_bearer_token()
     with mock.patch('requests.sessions.Session.send') as send:
         send.return_value = mock_send_value(token)
         client = OAuthClient(client_id='foo', access_token_url=url)
         self.assertEqual(client.fetch_access_token(), token)
         self.assertEqual(client.fetch_access_token(url), token)
示例#5
0
 def test_facebook_fetch_user(self):
     client = OAuthClient('a', 'b', api_base_url='https://facebook.com/api')
     client.set_token({'access_token': 'a', 'token_type': 'bearer'})
     client.session.send = mock_json_response({
         'id': 1,
         'name': 'Hsiaoming',
         'email': '[email protected]'
     })
     user = facebook_fetch_user(client)
     self.assertEqual(user.id, 1)
     self.assertEqual(user.name, 'Hsiaoming')
示例#6
0
 def test_google_fetch_user(self):
     client = OAuthClient('a', 'b', api_base_url='https://google.com/api')
     client.set_token({'access_token': 'a', 'token_type': 'bearer'})
     client.session.send = mock_json_response({
         'sub': 1,
         'name': 'Grey Li',
         'email': '[email protected]'
     })
     user = google_fetch_user(client)
     self.assertEqual(user.id, 1)
     self.assertEqual(user.name, 'Grey Li')
示例#7
0
    def test_oauth1_fetch_access_token(self):
        with mock.patch('requests.sessions.Session.send') as send:
            send.return_value = mock_send_value('oauth_token=foo')
            client = OAuthClient('foo',
                                 request_token_url='https://a.com/req',
                                 access_token_url='https://example.com/token')

            request_token = {'oauth_token': 'req'}
            resp = client.fetch_access_token(request_token=request_token,
                                             oauth_verifier='bar')
            self.assertEqual(resp['oauth_token'], 'foo')
    def test_oauth1_fetch_access_token(self):
        client = OAuthClient('foo',
                             request_token_url='https://a.com/req',
                             access_token_url='https://example.com/token')

        request_token = {'oauth_token': 'req'}

        client.session.send = mock_text_response('oauth_token=foo')
        resp = client.fetch_access_token(request_token=request_token,
                                         oauth_verifier='bar')
        self.assertEqual(resp['oauth_token'], 'foo')
    def test_oauth1_generate_authorize_redirect(self):
        def save_request_token(token):
            self.assertIn('oauth_token', token)

        client = OAuthClient('foo',
                             request_token_url='https://a.com/req',
                             authorize_url='https://a.com/auth')
        client.session.send = mock_text_response('oauth_token=foo')
        uri, state = client.generate_authorize_redirect(
            'https://b.com/bar', save_request_token)
        self.assertIsNone(state)
        self.assertIn('oauth_token=foo', uri)
示例#10
0
 def test_dropbox_fetch_user(self):
     client = OAuthClient('a', 'b', api_base_url='https://dropbox.com/api')
     client.set_token({'access_token': 'a', 'token_type': 'bearer'})
     client.session.send = mock_json_response({
         'account_id': 1,
         'name': {
             'display_name': 'Hsiaoming'
         },
         'email': '[email protected]'
     })
     user = dropbox_fetch_user(client)
     self.assertEqual(user.id, 1)
     self.assertEqual(user.name, 'Hsiaoming')
示例#11
0
    def test_oauth1_generate_authorize_redirect(self):
        def save_request_token(token):
            self.assertIn('oauth_token', token)

        with mock.patch('requests.sessions.Session.send') as send:
            send.return_value = mock_send_value('oauth_token=foo')
            client = OAuthClient('foo',
                                 request_token_url='https://a.com/req',
                                 authorize_url='https://a.com/auth')
            uri, state = client.generate_authorize_redirect(
                'https://b.com/bar', save_request_token)
            self.assertIsNone(state)
            self.assertIn('oauth_token=foo', uri)
示例#12
0
 def test_twitter_fetch_user(self):
     client = OAuthClient('a',
                          'b',
                          request_token_url='https://i.b',
                          api_base_url='https://twitter.com/api')
     client.set_token({'oauth_token': 'a', 'oauth_token_secret': 'b'})
     client.session.send = mock_json_response({
         'id': 1,
         'name': 'Hsiaoming',
         'email': '[email protected]'
     })
     user = twitter_fetch_user(client)
     self.assertEqual(user.id, 1)
     self.assertEqual(user.name, 'Hsiaoming')
示例#13
0
    def test_request_with_token(self):
        with mock.patch('requests.sessions.Session.send') as send:
            send.return_value = mock_send_value({'name': 'a'})

            client = OAuthClient(client_id='foo')
            token = get_bearer_token()
            resp = client.get('https://i.b/user', token=token)
            self.assertEqual(resp.json()['name'], 'a')

            resp = client.post('https://i.b/user', token=token)
            self.assertEqual(resp.json()['name'], 'a')

            resp = client.put('https://i.b/user', token=token)
            self.assertEqual(resp.json()['name'], 'a')

            resp = client.delete('https://i.b/user', token=token)
            self.assertEqual(resp.json()['name'], 'a')

            client.api_base_url = 'https://i.b'
            resp = client.get('user', token=token)
            self.assertEqual(resp.json()['name'], 'a')
示例#14
0
 def test_oauth2_generate_authorize_redirect(self):
     callback_uri = 'https://b.com/red'
     client = OAuthClient('foo', authorize_url='https://a.com/auth')
     uri, state = client.generate_authorize_redirect(callback_uri)
     self.assertIn(state, uri)
     self.assertIn(quote(callback_uri, ''), uri)
示例#15
0
from authlib.client import OAuthClient

client_id = 'REPLACE HERE'
client_secret = 'REPLACE HERE'
access_token_url = 'REPLACE HERE'
authorize_url = 'REPLACE HERE'

client = OAuthClient(client_id=client_id,
                     client_secret=client_secret,
                     access_token_url=access_token_url,
                     authorize_url=authorize_url)


def generate_redirect_uri(client, redirect_uri):
    """Generate reidrect  uri

        :param client:
        :param redirect_uri:
        :return: (redirect_uri, state)
        """
    return client.generate_authorize_redirect(redirect_uri)
示例#16
0
from authlib.client import OAuthClient
import requests

# TODO: update
client = OAuthClient(
    client_id='',
    client_secret='',
    api_base_url='https://api.github.com/',
    access_token_url='https://github.com/login/oauth/access_token',
    authorize_url='https://github.com/login/oauth/authorize',
    client_kwargs={'scope': 'user:email'},
)

# TODO: uncomment
#token = client.fetch_access_token(grant_type='client_credentials')
#print(token)

# TODO: remove
fake_token = {
    'access_token': 'dca6f1125fb4874e058887a098dadf91f0e1e70d',
    'token_type': 'bearer',
    'scope': 'user:email'
}

r = requests.get(
    'http://127.0.0.1:5000/',
    headers={'Authorization': 'Bearer {access_token}'.format(**fake_token)})
print()
print(r.text)
print()
r.raise_for_status()