diff --git a/CHANGELOG.md b/CHANGELOG.md index ed2b168d6..c465e6c78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://pypi.org/project/google-auth/#history +### [1.13.1](https://www.github.com/googleapis/google-auth-library-python/compare/v1.13.0...v1.13.1) (2020-04-01) + + +### Bug Fixes + +* invalid expiry type ([#481](https://www.github.com/googleapis/google-auth-library-python/issues/481)) ([7ae9a28](https://www.github.com/googleapis/google-auth-library-python/commit/7ae9a284dae16d274bfd4d876414f08efd6c3bff)) + ## [1.13.0](https://www.github.com/googleapis/google-auth-library-python/compare/v1.12.0...v1.13.0) (2020-04-01) diff --git a/google/auth/compute_engine/credentials.py b/google/auth/compute_engine/credentials.py index 1927c26bd..155046596 100644 --- a/google/auth/compute_engine/credentials.py +++ b/google/auth/compute_engine/credentials.py @@ -274,6 +274,9 @@ def _call_metadata_identity_endpoint(self, request): request (google.auth.transport.Request): The object used to make HTTP requests. + Returns: + Tuple[str, datetime.datetime]: The ID token and the expiry of the ID token. + Raises: google.auth.exceptions.RefreshError: If the Compute Engine metadata service can't be reached or if the instance has no credentials. @@ -291,7 +294,7 @@ def _call_metadata_identity_endpoint(self, request): six.raise_from(new_exc, caught_exc) _, payload, _, _ = jwt._unverified_decode(id_token) - return id_token, payload["exp"] + return id_token, datetime.datetime.fromtimestamp(payload["exp"]) def refresh(self, request): """Refreshes the ID token. diff --git a/setup.py b/setup.py index 0930fd8b5..cb6ed5aa6 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ with io.open("README.rst", "r") as fh: long_description = fh.read() -version = "1.13.0" +version = "1.13.1" setup( name="google-auth", diff --git a/system_tests/test_compute_engine.py b/system_tests/test_compute_engine.py index b0d42f362..1e0eaf11d 100644 --- a/system_tests/test_compute_engine.py +++ b/system_tests/test_compute_engine.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +from datetime import datetime + import pytest import google.auth @@ -61,8 +63,9 @@ def test_id_token_from_metadata(http_request): credentials.refresh(http_request) _, payload, _, _ = jwt._unverified_decode(credentials.token) + assert credentials.valid assert payload["aud"] == AUDIENCE - assert payload["exp"] == credentials.expiry + assert datetime.fromtimestamp(payload["exp"]) == credentials.expiry def test_fetch_id_token(http_request): diff --git a/tests/compute_engine/test_credentials.py b/tests/compute_engine/test_credentials.py index 264235e49..98def0fc5 100644 --- a/tests/compute_engine/test_credentials.py +++ b/tests/compute_engine/test_credentials.py @@ -522,7 +522,7 @@ def test_get_id_token_from_metadata(self, get, get_service_account_info): cred.refresh(request=mock.Mock()) assert cred.token == SAMPLE_ID_TOKEN - assert cred.expiry == SAMPLE_ID_TOKEN_EXP + assert cred.expiry == datetime.datetime.fromtimestamp(SAMPLE_ID_TOKEN_EXP) assert cred._use_metadata_identity_endpoint assert cred._signer is None assert cred._token_uri is None