Skip to content

Commit 7ba2b57

Browse files
committed
Adding tests for all branches of OAuth2Credentials._do_revoke.
Also updating the `_do_refresh_request tests` to check the content sent.
1 parent 043575a commit 7ba2b57

File tree

1 file changed

+88
-2
lines changed

1 file changed

+88
-2
lines changed

tests/test_client.py

Lines changed: 88 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,21 +1148,28 @@ def test_get_access_token_with_http(self, expires_in, refresh_mock):
11481148
expires_in.assert_called_once_with()
11491149
refresh_mock.assert_called_once_with(http_obj)
11501150

1151+
@mock.patch.object(OAuth2Credentials, '_generate_refresh_request_headers',
1152+
return_value=object())
1153+
@mock.patch.object(OAuth2Credentials, '_generate_refresh_request_body',
1154+
return_value=object())
11511155
@mock.patch('oauth2client.client.logger')
11521156
def _do_refresh_request_test_helper(self, response, content,
1153-
error_msg, logger, store=None):
1157+
error_msg, logger, gen_body,
1158+
gen_headers, store=None):
11541159
credentials = OAuth2Credentials(None, None, None, None,
11551160
None, None, None)
11561161
credentials.store = store
11571162
http_request = mock.Mock()
11581163
http_request.return_value = response, content
11591164

1160-
# HttpAccessTokenRefreshError(error_msg, status=resp.status)
11611165
with self.assertRaises(HttpAccessTokenRefreshError) as exc_manager:
11621166
credentials._do_refresh_request(http_request)
11631167

11641168
self.assertEqual(exc_manager.exception.args, (error_msg,))
11651169
self.assertEqual(exc_manager.exception.status, response.status)
1170+
http_request.assert_called_once_with(None, body=gen_body.return_value,
1171+
headers=gen_headers.return_value,
1172+
method='POST')
11661173

11671174
call1 = mock.call('Refreshing access_token')
11681175
failure_template = 'Failed to retrieve access token: %s'
@@ -1218,6 +1225,85 @@ def test__do_refresh_request_failure_w_json_error_and_desc(self):
12181225
error_msg = '%s: %s' % (base_error, error_desc)
12191226
self._do_refresh_request_test_helper(response, content, error_msg)
12201227

1228+
@mock.patch('oauth2client.client.logger')
1229+
def _do_revoke_test_helper(self, response, content,
1230+
error_msg, logger, store=None):
1231+
credentials = OAuth2Credentials(None, None, None, None,
1232+
None, None, None,
1233+
revoke_uri=GOOGLE_REVOKE_URI)
1234+
credentials.store = store
1235+
http_request = mock.Mock()
1236+
http_request.return_value = response, content
1237+
token = u's3kr3tz'
1238+
1239+
if response.status == http_client.OK:
1240+
self.assertFalse(credentials.invalid)
1241+
self.assertIsNone(credentials._do_revoke(http_request, token))
1242+
self.assertTrue(credentials.invalid)
1243+
if store is not None:
1244+
store.delete.assert_called_once_with()
1245+
else:
1246+
self.assertFalse(credentials.invalid)
1247+
with self.assertRaises(TokenRevokeError) as exc_manager:
1248+
credentials._do_revoke(http_request, token)
1249+
# Make sure invalid was not flipped on.
1250+
self.assertFalse(credentials.invalid)
1251+
self.assertEqual(exc_manager.exception.args, (error_msg,))
1252+
if store is not None:
1253+
store.delete.assert_not_called()
1254+
1255+
revoke_uri = GOOGLE_REVOKE_URI + '?token=' + token
1256+
http_request.assert_called_once_with(revoke_uri)
1257+
1258+
logger.info.assert_called_once_with('Revoking token')
1259+
1260+
def test__do_revoke_success(self):
1261+
response = httplib2.Response({
1262+
'status': http_client.OK,
1263+
})
1264+
self._do_revoke_test_helper(response, b'', None)
1265+
1266+
def test__do_revoke_success_with_store(self):
1267+
response = httplib2.Response({
1268+
'status': http_client.OK,
1269+
})
1270+
store = mock.MagicMock()
1271+
self._do_revoke_test_helper(response, b'', None, store=store)
1272+
1273+
def test__do_revoke_non_json_failure(self):
1274+
response = httplib2.Response({
1275+
'status': http_client.BAD_REQUEST,
1276+
})
1277+
content = u'Bad request'
1278+
error_msg = 'Invalid response %s.' % (response.status,)
1279+
self._do_revoke_test_helper(response, content, error_msg)
1280+
1281+
def test__do_revoke_basic_failure(self):
1282+
response = httplib2.Response({
1283+
'status': http_client.INTERNAL_SERVER_ERROR,
1284+
})
1285+
content = u'{}'
1286+
error_msg = 'Invalid response %s.' % (response.status,)
1287+
self._do_revoke_test_helper(response, content, error_msg)
1288+
1289+
def test__do_revoke_failure_w_json_error(self):
1290+
response = httplib2.Response({
1291+
'status': http_client.BAD_GATEWAY,
1292+
})
1293+
error_msg = 'Hi I am an error not a bearer'
1294+
content = json.dumps({'error': error_msg})
1295+
self._do_revoke_test_helper(response, content, error_msg)
1296+
1297+
def test__do_revoke_failure_w_json_error_and_store(self):
1298+
response = httplib2.Response({
1299+
'status': http_client.BAD_GATEWAY,
1300+
})
1301+
error_msg = 'Where are we going wearer?'
1302+
content = json.dumps({'error': error_msg})
1303+
store = mock.MagicMock()
1304+
self._do_revoke_test_helper(response, content, error_msg,
1305+
store=store)
1306+
12211307
def test_has_scopes(self):
12221308
self.assertTrue(self.credentials.has_scopes('foo'))
12231309
self.assertTrue(self.credentials.has_scopes(['foo']))

0 commit comments

Comments
 (0)