Skip to content

Commit

Permalink
fix: avoid losing the original '_include_email' parameter in imperson…
Browse files Browse the repository at this point in the history
…ated credentials (#626)

Co-authored-by: Tres Seaver <tseaver@palladion.com>
  • Loading branch information
pietrodn and tseaver committed Dec 11, 2020
1 parent ec1b688 commit fd9b5b1
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
2 changes: 2 additions & 0 deletions google/auth/impersonated_credentials.py
Expand Up @@ -341,13 +341,15 @@ def from_credentials(self, target_credentials, target_audience=None):
return self.__class__(
target_credentials=self._target_credentials,
target_audience=target_audience,
include_email=self._include_email,
quota_project_id=self._quota_project_id,
)

def with_target_audience(self, target_audience):
return self.__class__(
target_credentials=self._target_credentials,
target_audience=target_audience,
include_email=self._include_email,
quota_project_id=self._quota_project_id,
)

Expand Down
8 changes: 6 additions & 2 deletions tests/test_impersonated_credentials.py
Expand Up @@ -368,12 +368,13 @@ def test_id_token_from_credential(
assert not credentials.expired

id_creds = impersonated_credentials.IDTokenCredentials(
credentials, target_audience=target_audience
credentials, target_audience=target_audience, include_email=True
)
id_creds = id_creds.from_credentials(target_credentials=credentials)
id_creds.refresh(request)

assert id_creds.token == ID_TOKEN_DATA
assert id_creds._include_email is True

def test_id_token_with_target_audience(
self, mock_donor_credentials, mock_authorizedsession_idtoken
Expand All @@ -396,12 +397,15 @@ def test_id_token_with_target_audience(
assert credentials.valid
assert not credentials.expired

id_creds = impersonated_credentials.IDTokenCredentials(credentials)
id_creds = impersonated_credentials.IDTokenCredentials(
credentials, include_email=True
)
id_creds = id_creds.with_target_audience(target_audience=target_audience)
id_creds.refresh(request)

assert id_creds.token == ID_TOKEN_DATA
assert id_creds.expiry == datetime.datetime.fromtimestamp(ID_TOKEN_EXPIRY)
assert id_creds._include_email is True

def test_id_token_invalid_cred(
self, mock_donor_credentials, mock_authorizedsession_idtoken
Expand Down

0 comments on commit fd9b5b1

Please sign in to comment.