Merge pull request #481 from dhermes/cover-client-v3

Adding tests for all branches of OAuth2Credentials._do_revoke.
This commit is contained in:
Danny Hermes
2016-04-06 16:05:23 -07:00

View File

@@ -1148,21 +1148,28 @@ class BasicCredentialsTests(unittest2.TestCase):
expires_in.assert_called_once_with()
refresh_mock.assert_called_once_with(http_obj)
@mock.patch.object(OAuth2Credentials, '_generate_refresh_request_headers',
return_value=object())
@mock.patch.object(OAuth2Credentials, '_generate_refresh_request_body',
return_value=object())
@mock.patch('oauth2client.client.logger')
def _do_refresh_request_test_helper(self, response, content,
error_msg, logger, store=None):
error_msg, logger, gen_body,
gen_headers, store=None):
credentials = OAuth2Credentials(None, None, None, None,
None, None, None)
credentials.store = store
http_request = mock.Mock()
http_request.return_value = response, content
# HttpAccessTokenRefreshError(error_msg, status=resp.status)
with self.assertRaises(HttpAccessTokenRefreshError) as exc_manager:
credentials._do_refresh_request(http_request)
self.assertEqual(exc_manager.exception.args, (error_msg,))
self.assertEqual(exc_manager.exception.status, response.status)
http_request.assert_called_once_with(None, body=gen_body.return_value,
headers=gen_headers.return_value,
method='POST')
call1 = mock.call('Refreshing access_token')
failure_template = 'Failed to retrieve access token: %s'
@@ -1218,6 +1225,85 @@ class BasicCredentialsTests(unittest2.TestCase):
error_msg = '%s: %s' % (base_error, error_desc)
self._do_refresh_request_test_helper(response, content, error_msg)
@mock.patch('oauth2client.client.logger')
def _do_revoke_test_helper(self, response, content,
error_msg, logger, store=None):
credentials = OAuth2Credentials(None, None, None, None,
None, None, None,
revoke_uri=GOOGLE_REVOKE_URI)
credentials.store = store
http_request = mock.Mock()
http_request.return_value = response, content
token = u's3kr3tz'
if response.status == http_client.OK:
self.assertFalse(credentials.invalid)
self.assertIsNone(credentials._do_revoke(http_request, token))
self.assertTrue(credentials.invalid)
if store is not None:
store.delete.assert_called_once_with()
else:
self.assertFalse(credentials.invalid)
with self.assertRaises(TokenRevokeError) as exc_manager:
credentials._do_revoke(http_request, token)
# Make sure invalid was not flipped on.
self.assertFalse(credentials.invalid)
self.assertEqual(exc_manager.exception.args, (error_msg,))
if store is not None:
store.delete.assert_not_called()
revoke_uri = GOOGLE_REVOKE_URI + '?token=' + token
http_request.assert_called_once_with(revoke_uri)
logger.info.assert_called_once_with('Revoking token')
def test__do_revoke_success(self):
response = httplib2.Response({
'status': http_client.OK,
})
self._do_revoke_test_helper(response, b'', None)
def test__do_revoke_success_with_store(self):
response = httplib2.Response({
'status': http_client.OK,
})
store = mock.MagicMock()
self._do_revoke_test_helper(response, b'', None, store=store)
def test__do_revoke_non_json_failure(self):
response = httplib2.Response({
'status': http_client.BAD_REQUEST,
})
content = u'Bad request'
error_msg = 'Invalid response %s.' % (response.status,)
self._do_revoke_test_helper(response, content, error_msg)
def test__do_revoke_basic_failure(self):
response = httplib2.Response({
'status': http_client.INTERNAL_SERVER_ERROR,
})
content = u'{}'
error_msg = 'Invalid response %s.' % (response.status,)
self._do_revoke_test_helper(response, content, error_msg)
def test__do_revoke_failure_w_json_error(self):
response = httplib2.Response({
'status': http_client.BAD_GATEWAY,
})
error_msg = 'Hi I am an error not a bearer'
content = json.dumps({'error': error_msg})
self._do_revoke_test_helper(response, content, error_msg)
def test__do_revoke_failure_w_json_error_and_store(self):
response = httplib2.Response({
'status': http_client.BAD_GATEWAY,
})
error_msg = 'Where are we going wearer?'
content = json.dumps({'error': error_msg})
store = mock.MagicMock()
self._do_revoke_test_helper(response, content, error_msg,
store=store)
def test_has_scopes(self):
self.assertTrue(self.credentials.has_scopes('foo'))
self.assertTrue(self.credentials.has_scopes(['foo']))