Skip to content

Instantly share code, notes, and snippets.

@maxcountryman
Created February 22, 2013 02:22
Show Gist options
  • Save maxcountryman/5010249 to your computer and use it in GitHub Desktop.
Save maxcountryman/5010249 to your computer and use it in GitHub Desktop.
A snippet from the rauth 0.5.0 test_service test suite.
class OflyServiceTestCase(RauthTestCase, HttpMixin):
app_id = '000'
def setUp(self):
RauthTestCase.setUp(self)
self.authorize_url = 'http://example.com/authorize'
self.base_url = 'http://example.com/api/'
self.service = OflyService('000',
'111',
name='service',
authorize_url=self.authorize_url,
base_url=self.base_url)
self.service.request = self.fake_request
def fake_sign(app_id):
def wrap(func):
@wraps(func)
@patch('rauth.session.datetime', MutableDatetime)
@patch('rauth.session.md5', FakeHexdigest)
@patch('rauth.session.sha1', FakeHexdigest)
def decorated(*args, **kwargs):
hash_meth = kwargs.get('hash_meth', 'sha1').upper()
ofly_params = {'oflyAppId': app_id,
'oflyHashMeth': hash_meth,
'oflyTimestamp': '1900-01-01T00:00:00.0Z',
'oflyApiSig': 'foo'}
MutableDatetime.utcnow = \
classmethod(lambda cls: datetime(1900, 1, 1))
return func(ofly_params=ofly_params, *args, **kwargs)
return decorated
return wrap
@patch.object(requests.Session, 'request')
@fake_sign(app_id)
def fake_request(self,
method,
url,
mock_request,
ofly_params,
header_auth=False,
hash_meth='sha1',
**kwargs):
mock_request.return_value = self.response
session = self.service.get_session()
service = Service('service',
self.service.base_url,
self.service.authorize_url)
r = service.request(session,
method,
url,
header_auth=header_auth,
hash_meth=hash_meth,
**kwargs)
url = service._set_url(url)
kwargs.setdefault('params', {})
if header_auth:
kwargs.setdefault('headers', {})
auth_header = _get_sorted_params(ofly_params)
kwargs['headers'].update({'Authorization': auth_header})
else:
kwargs['params'].update(**ofly_params)
kwargs['params'] = _get_sorted_params(kwargs['params'])
mock_request.assert_called_with(method,
url,
timeout=OFLY_DEFAULT_TIMEOUT,
**kwargs)
return r
def test_get_session(self):
s = self.service.get_session()
self.assertIsInstance(s, OflySession)
@fake_sign(app_id)
def test_get_authorize_url(self, ofly_params):
expected_url = 'http://example.com/authorize?'
params = _get_sorted_params(ofly_params)
url = self.service.get_authorize_url()
self.assertEqual(url, expected_url + params)
def test_request_with_header_auth(self):
r = self.service.request('GET',
'http://example.com/',
header_auth=True)
self.assert_ok(r)
def test_request_with_md5(self):
r = self.service.request('GET',
'http://example.com/',
hash_meth='md5')
self.assert_ok(r)
def test_request_with_bad_hash_meth(self):
with self.assertRaises(TypeError) as e:
self.service.request('GET',
'http://example.com/',
hash_meth='foo')
self.assertEqual(str(e.exception),
'hash_meth must be one of "sha1", "md5"')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment