aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDanny Hermes <daniel.j.hermes@gmail.com>2016-04-06 17:33:36 -0700
committerDanny Hermes <daniel.j.hermes@gmail.com>2016-04-06 17:38:02 -0700
commit93338c2080448650be07a17b21555529ddb9e084 (patch)
tree889bfd21e2848f514476d6fa3c21733e56a27dd8 /tests
parentcbe633059b8157303ba9cb826f815f1c35cb7364 (diff)
downloadoauth2client-93338c2080448650be07a17b21555529ddb9e084.tar.gz
Testing OAuth2Credentials._do_retrieve_scopes().
Diffstat (limited to 'tests')
-rw-r--r--tests/test_client.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/test_client.py b/tests/test_client.py
index 98ab0bc..8f51d57 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -1386,6 +1386,80 @@ class BasicCredentialsTests(unittest2.TestCase):
self._do_revoke_test_helper(response, content, error_msg,
store=store)
+ @mock.patch('oauth2client.client.logger')
+ def _do_retrieve_scopes_test_helper(self, response, content,
+ error_msg, logger, scopes=None):
+ credentials = OAuth2Credentials(None, None, None, None,
+ None, None, None,
+ token_info_uri=GOOGLE_TOKEN_INFO_URI)
+ http_request = mock.Mock()
+ http_request.return_value = response, content
+ token = u's3kr3tz'
+
+ if response.status == http_client.OK:
+ self.assertEqual(credentials.scopes, set())
+ self.assertIsNone(
+ credentials._do_retrieve_scopes(http_request, token))
+ self.assertEqual(credentials.scopes, scopes)
+ else:
+ self.assertEqual(credentials.scopes, set())
+ with self.assertRaises(client.Error) as exc_manager:
+ credentials._do_retrieve_scopes(http_request, token)
+ # Make sure scopes were not changed.
+ self.assertEqual(credentials.scopes, set())
+ self.assertEqual(exc_manager.exception.args, (error_msg,))
+
+ token_uri = _update_query_params(
+ GOOGLE_TOKEN_INFO_URI,
+ {'fields': 'scope', 'access_token': token})
+ self.assertEqual(len(http_request.mock_calls), 1)
+ scopes_call = http_request.mock_calls[0]
+ call_args = scopes_call[1]
+ self.assertEqual(len(call_args), 1)
+ called_uri = call_args[0]
+ assertUrisEqual(self, token_uri, called_uri)
+ logger.info.assert_called_once_with('Refreshing scopes')
+
+ def test__do_retrieve_scopes_success_bad_json(self):
+ response = httplib2.Response({
+ 'status': http_client.OK,
+ })
+ invalid_json = b'{'
+ with self.assertRaises(ValueError):
+ self._do_retrieve_scopes_test_helper(response, invalid_json, None)
+
+ def test__do_retrieve_scopes_success(self):
+ response = httplib2.Response({
+ 'status': http_client.OK,
+ })
+ content = b'{"scope": "foo bar"}'
+ self._do_retrieve_scopes_test_helper(response, content, None,
+ scopes=set(['foo', 'bar']))
+
+ def test__do_retrieve_scopes_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_retrieve_scopes_test_helper(response, content, error_msg)
+
+ def test__do_retrieve_scopes_basic_failure(self):
+ response = httplib2.Response({
+ 'status': http_client.INTERNAL_SERVER_ERROR,
+ })
+ content = u'{}'
+ error_msg = 'Invalid response %s.' % (response.status,)
+ self._do_retrieve_scopes_test_helper(response, content, error_msg)
+
+ def test__do_retrieve_scopes_failure_w_json_error(self):
+ response = httplib2.Response({
+ 'status': http_client.BAD_GATEWAY,
+ })
+ error_msg = 'Error desc I sit at a desk'
+ content = json.dumps({'error_description': error_msg})
+ self._do_retrieve_scopes_test_helper(response, content, error_msg)
+
def test_has_scopes(self):
self.assertTrue(self.credentials.has_scopes('foo'))
self.assertTrue(self.credentials.has_scopes(['foo']))