/usr/lib/python3/dist-packages/social/tests/backends/oauth.py is in python3-social-auth 0.2.13-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | import requests
from httpretty import HTTPretty
from social.p3 import urlparse
from social.utils import parse_qs, url_add_parameters
from social.tests.models import User
from social.tests.backends.base import BaseBackendTest
class BaseOAuthTest(BaseBackendTest):
backend = None
backend_path = None
user_data_body = None
user_data_url = ''
user_data_content_type = 'application/json'
access_token_body = None
access_token_status = 200
expected_username = ''
def extra_settings(self):
return {'SOCIAL_AUTH_' + self.name + '_KEY': 'a-key',
'SOCIAL_AUTH_' + self.name + '_SECRET': 'a-secret-key'}
def _method(self, method):
return {'GET': HTTPretty.GET,
'POST': HTTPretty.POST}[method]
def handle_state(self, start_url, target_url):
start_query = parse_qs(urlparse(start_url).query)
redirect_uri = start_query.get('redirect_uri')
if getattr(self.backend, 'STATE_PARAMETER', False):
if start_query.get('state'):
target_url = url_add_parameters(target_url, {
'state': start_query['state']
})
if redirect_uri and getattr(self.backend, 'REDIRECT_STATE', False):
redirect_query = parse_qs(urlparse(redirect_uri).query)
if redirect_query.get('redirect_state'):
target_url = url_add_parameters(target_url, {
'redirect_state': redirect_query['redirect_state']
})
return target_url
def auth_handlers(self, start_url):
target_url = self.handle_state(start_url,
self.strategy.build_absolute_uri(
self.complete_url
))
HTTPretty.register_uri(HTTPretty.GET,
start_url,
status=301,
location=target_url)
HTTPretty.register_uri(HTTPretty.GET,
target_url,
status=200,
body='foobar')
HTTPretty.register_uri(self._method(self.backend.ACCESS_TOKEN_METHOD),
uri=self.backend.access_token_url(),
status=self.access_token_status,
body=self.access_token_body or '',
content_type='text/json')
if self.user_data_url:
HTTPretty.register_uri(HTTPretty.GET,
self.user_data_url,
body=self.user_data_body or '',
content_type=self.user_data_content_type)
return target_url
def do_start(self):
start_url = self.backend.start().url
target_url = self.auth_handlers(start_url)
response = requests.get(start_url)
self.assertEqual(response.url, target_url)
self.assertEqual(response.text, 'foobar')
self.strategy.set_request_data(parse_qs(urlparse(target_url).query),
self.backend)
return self.backend.complete()
class OAuth1Test(BaseOAuthTest):
request_token_body = None
raw_complete_url = '/complete/{0}/?oauth_verifier=bazqux&' \
'oauth_token=foobar'
def request_token_handler(self):
HTTPretty.register_uri(self._method(self.backend.REQUEST_TOKEN_METHOD),
self.backend.REQUEST_TOKEN_URL,
body=self.request_token_body,
status=200)
def do_start(self):
self.request_token_handler()
return super(OAuth1Test, self).do_start()
class OAuth2Test(BaseOAuthTest):
raw_complete_url = '/complete/{0}/?code=foobar'
refresh_token_body = ''
def refresh_token_arguments(self):
return {}
def do_refresh_token(self):
self.do_login()
HTTPretty.register_uri(self._method(self.backend.REFRESH_TOKEN_METHOD),
self.backend.refresh_token_url(),
status=200,
body=self.refresh_token_body)
user = list(User.cache.values())[0]
social = user.social[0]
social.refresh_token(strategy=self.strategy,
**self.refresh_token_arguments())
return user, social
|