Skip to content

Commit 3f3fca1

Browse files
Fix issues with GceAssertionCredentials in Python 3
1 parent 5cc8d57 commit 3f3fca1

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

apitools/base/py/credentials_lib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ def _ScopesFromMetadataServer(self, scopes):
352352
def GetServiceAccount(self, account):
353353
relative_url = 'instance/service-accounts'
354354
response = _GceMetadataRequest(relative_url)
355-
response_lines = [line.rstrip('/\n\r')
355+
response_lines = [line.rstrip(b'/\n\r').decode('utf-8')
356356
for line in response.readlines()]
357357
return account in response_lines
358358

@@ -395,7 +395,7 @@ def _do_refresh_request(self, unused_http_request):
395395
raise
396396
content = response.read()
397397
try:
398-
credential_info = json.loads(content)
398+
credential_info = json.loads(content.decode('utf-8'))
399399
except ValueError:
400400
raise exceptions.CredentialsError(
401401
'Could not parse response as JSON: %s' % content)

apitools/base/py/credentials_lib_test.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ def __init__(self, scopes=None, service_account_name=None):
3434

3535
def __call__(self, request_url):
3636
if request_url.endswith('scopes'):
37-
return six.StringIO(''.join(self._scopes))
37+
return six.BytesIO(''.join(self._scopes).encode('utf-8'))
3838
elif request_url.endswith('service-accounts'):
39-
return six.StringIO(self._sa)
39+
return six.BytesIO(self._sa.encode('utf-8'))
4040
elif request_url.endswith(
4141
'/service-accounts/%s/token' % self._sa):
42-
return six.StringIO('{"access_token": "token"}')
42+
return six.BytesIO('{"access_token": "token"}'.encode('utf-8'))
4343
self.fail('Unexpected HTTP request to %s' % request_url)
4444

4545

@@ -132,11 +132,11 @@ def testGetServiceAccount(self):
132132
creds = self._GetServiceCreds()
133133
opener = mock.MagicMock()
134134
opener.open = mock.MagicMock()
135-
opener.open.return_value = six.StringIO('default/\nanother')
135+
opener.open.return_value = six.BytesIO(b'default/\nanother')
136136
with mock.patch.object(six.moves.urllib.request, 'build_opener',
137137
return_value=opener,
138138
autospec=True) as build_opener:
139-
creds.GetServiceAccount('default')
139+
creds.GetServiceAccount(b'default')
140140
self.assertEqual(1, build_opener.call_count)
141141
self.assertEqual(1, opener.open.call_count)
142142
req = opener.open.call_args[0][0]

0 commit comments

Comments
 (0)