Skip to content

Commit f756ba6

Browse files
committed
implement review changes
1 parent 5522ab0 commit f756ba6

File tree

2 files changed

+45
-9
lines changed

2 files changed

+45
-9
lines changed

google/auth/compute_engine/credentials.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ def __init__(
8787
self._universe_domain = universe_domain
8888
self._universe_domain_cached = True
8989

90-
def _retrieve_info(self, request):
91-
"""Retrieve information about the service account.
90+
def _retrieve_scopes(self, request):
91+
"""Retrieve scopes about the service account.
9292
93-
Updates the scopes and retrieves the full service account email.
93+
Updates the scopes for the assosiated service account.
9494
9595
Args:
9696
request (google.auth.transport.Request): The object used to make
@@ -100,9 +100,7 @@ def _retrieve_info(self, request):
100100
request, service_account=self._service_account_email
101101
)
102102

103-
# Don't override scopes requested by the user.
104-
if self._scopes is None:
105-
self._scopes = info["scopes"]
103+
self._scopes = info["scopes"]
106104

107105
def _metric_header_for_usage(self):
108106
return metrics.CRED_TYPE_SA_MDS
@@ -121,7 +119,8 @@ def refresh(self, request):
121119
"""
122120
scopes = self._scopes if self._scopes is not None else self._default_scopes
123121
try:
124-
self._retrieve_info(request)
122+
if self._scopes is None:
123+
self._retrieve_scopes(request)
125124
self.token, self.expiry = _metadata.get_service_account_token(
126125
request, service_account=self._service_account_email, scopes=scopes
127126
)

tests/compute_engine/test_credentials.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,48 @@ def test_default_state(self):
9898
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,
9999
)
100100
@mock.patch("google.auth.compute_engine._metadata.get", autospec=True)
101-
def test_refresh_success(self, get, utcnow):
101+
def test_refresh_success_with_service_account_email(self, get, utcnow):
102+
service_account_email = "[email protected]"
103+
self.credentials.service_account_email = service_account_email
102104
get.side_effect = [
103105
{
104106
# First request is for sevice account info.
105-
"email": "[email protected]",
107+
"email": service_account_email,
108+
"scopes": ["one", "two"],
109+
},
110+
{
111+
# Second request is for the token.
112+
"access_token": "token",
113+
"expires_in": 500,
114+
},
115+
]
116+
117+
# Refresh credentials
118+
self.credentials.refresh(None)
119+
120+
# Check that the credentials have the token and proper expiration
121+
assert self.credentials.token == "token"
122+
assert self.credentials.expiry == (utcnow() + datetime.timedelta(seconds=500))
123+
124+
# Check the credential info
125+
assert self.credentials.service_account_email == service_account_email
126+
assert self.credentials._scopes == ["one", "two"]
127+
128+
# Check that the credentials are valid (have a token and are not
129+
# expired)
130+
assert self.credentials.valid
131+
132+
@mock.patch(
133+
"google.auth._helpers.utcnow",
134+
return_value=datetime.datetime.min + _helpers.REFRESH_THRESHOLD,
135+
)
136+
@mock.patch("google.auth.compute_engine._metadata.get", autospec=True)
137+
def test_refresh_success_with_default_email(self, get, utcnow):
138+
service_account_email = "[email protected]"
139+
get.side_effect = [
140+
{
141+
# First request is for sevice account info.
142+
"email": service_account_email,
106143
"scopes": ["one", "two"],
107144
},
108145
{

0 commit comments

Comments
 (0)