From 3f3fca17fce1441c54d194abf51a00a7f076d1a9 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Fri, 1 Feb 2019 17:07:31 -0800 Subject: [PATCH] Fix issues with GceAssertionCredentials in Python 3 --- apitools/base/py/credentials_lib.py | 4 ++-- apitools/base/py/credentials_lib_test.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apitools/base/py/credentials_lib.py b/apitools/base/py/credentials_lib.py index 576c30e6..7adf64b0 100644 --- a/apitools/base/py/credentials_lib.py +++ b/apitools/base/py/credentials_lib.py @@ -352,7 +352,7 @@ def _ScopesFromMetadataServer(self, scopes): def GetServiceAccount(self, account): relative_url = 'instance/service-accounts' response = _GceMetadataRequest(relative_url) - response_lines = [line.rstrip('/\n\r') + response_lines = [line.rstrip(b'/\n\r').decode('utf-8') for line in response.readlines()] return account in response_lines @@ -395,7 +395,7 @@ def _do_refresh_request(self, unused_http_request): raise content = response.read() try: - credential_info = json.loads(content) + credential_info = json.loads(content.decode('utf-8')) except ValueError: raise exceptions.CredentialsError( 'Could not parse response as JSON: %s' % content) diff --git a/apitools/base/py/credentials_lib_test.py b/apitools/base/py/credentials_lib_test.py index 80b970c4..df9d1c51 100644 --- a/apitools/base/py/credentials_lib_test.py +++ b/apitools/base/py/credentials_lib_test.py @@ -34,12 +34,12 @@ def __init__(self, scopes=None, service_account_name=None): def __call__(self, request_url): if request_url.endswith('scopes'): - return six.StringIO(''.join(self._scopes)) + return six.BytesIO(''.join(self._scopes).encode('utf-8')) elif request_url.endswith('service-accounts'): - return six.StringIO(self._sa) + return six.BytesIO(self._sa.encode('utf-8')) elif request_url.endswith( '/service-accounts/%s/token' % self._sa): - return six.StringIO('{"access_token": "token"}') + return six.BytesIO('{"access_token": "token"}'.encode('utf-8')) self.fail('Unexpected HTTP request to %s' % request_url) @@ -132,11 +132,11 @@ def testGetServiceAccount(self): creds = self._GetServiceCreds() opener = mock.MagicMock() opener.open = mock.MagicMock() - opener.open.return_value = six.StringIO('default/\nanother') + opener.open.return_value = six.BytesIO(b'default/\nanother') with mock.patch.object(six.moves.urllib.request, 'build_opener', return_value=opener, autospec=True) as build_opener: - creds.GetServiceAccount('default') + creds.GetServiceAccount(b'default') self.assertEqual(1, build_opener.call_count) self.assertEqual(1, opener.open.call_count) req = opener.open.call_args[0][0]