Created
February 22, 2013 02:22
-
-
Save maxcountryman/5010249 to your computer and use it in GitHub Desktop.
A snippet from the rauth 0.5.0 test_service test suite.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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