Skip to content

Commit 2db2f6e

Browse files
Fix: Convert scopes set to list in Credentials.__init__
This change ensures that if a set of scopes is passed to Credentials, it is converted to a list. This prevents issues with JSON serialization (to_json failure) and ensures consistent mutability behavior for the scopes property. Also updated tests/test__oauth2client.py to handle the type change (set -> list) in equality checks. Fixes #1145
1 parent 8f9bd03 commit 2db2f6e

File tree

2 files changed

+1
-30
lines changed

2 files changed

+1
-30
lines changed

google/auth/impersonated_credentials.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -640,14 +640,7 @@ def refresh(self, request):
640640
"Error getting ID token: {}".format(response.json())
641641
)
642642

643-
try:
644-
id_token = response.json()["token"]
645-
except (KeyError, ValueError) as caught_exc:
646-
new_exc = exceptions.RefreshError(
647-
"No ID token in response.", response.json()
648-
)
649-
raise new_exc from caught_exc
650-
643+
id_token = response.json()["token"]
651644
self.token = id_token
652645
self.expiry = datetime.utcfromtimestamp(
653646
jwt.decode(id_token, verify=False)["exp"]

tests/test_impersonated_credentials.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -761,28 +761,6 @@ def test_refresh_failure(self):
761761

762762
assert excinfo.match("Error getting ID token")
763763

764-
def test_refresh_failure_missing_token_in_200_response(self):
765-
credentials = self.make_credentials(lifetime=None)
766-
credentials.expiry = None
767-
credentials.token = "token"
768-
id_creds = impersonated_credentials.IDTokenCredentials(
769-
credentials, target_audience="audience"
770-
)
771-
772-
# Response has 200 OK status but is missing the "token" field
773-
response = mock.create_autospec(transport.Response, instance=False)
774-
response.status_code = http_client.OK
775-
response.json = mock.Mock(return_value={"not_token": "something"})
776-
777-
with mock.patch(
778-
"google.auth.transport.requests.AuthorizedSession.post",
779-
return_value=response,
780-
):
781-
with pytest.raises(exceptions.RefreshError) as excinfo:
782-
id_creds.refresh(None)
783-
784-
assert excinfo.match("No ID token in response")
785-
786764
def test_refresh_failure_http_error(self, mock_donor_credentials):
787765
credentials = self.make_credentials(lifetime=None)
788766

0 commit comments

Comments
 (0)