From 9b26950dc4d273dd738fe6aac53e99651cabe555 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Tue, 25 Jul 2023 11:28:17 -0700 Subject: [PATCH 1/4] chore: Use stdlib unittest.mock instead of separate mock library. Resolves https://github.com/googleapis/google-auth-library-python/issues/1055 --- system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes .../system_tests_sync/test_mtls_http.py | 2 +- testing/requirements.txt | 1 - tests/compute_engine/test__metadata.py | 2 +- tests/compute_engine/test_credentials.py | 2 +- tests/conftest.py | 2 +- tests/crypt/test__python_rsa.py | 2 +- tests/oauth2/test__client.py | 2 +- tests/oauth2/test_challenges.py | 2 +- tests/oauth2/test_credentials.py | 2 +- tests/oauth2/test_gdch_credentials.py | 2 +- tests/oauth2/test_id_token.py | 2 +- tests/oauth2/test_reauth.py | 2 +- tests/oauth2/test_service_account.py | 2 +- tests/oauth2/test_sts.py | 2 +- tests/test__cloud_sdk.py | 2 +- tests/test__default.py | 2 +- tests/test__exponential_backoff.py | 2 +- tests/test__oauth2client.py | 2 +- tests/test_app_engine.py | 2 +- tests/test_aws.py | 2 +- tests/test_downscoped.py | 2 +- tests/test_external_account.py | 2 +- .../test_external_account_authorized_user.py | 2 +- tests/test_iam.py | 2 +- tests/test_identity_pool.py | 2 +- tests/test_impersonated_credentials.py | 2 +- tests/test_jwt.py | 2 +- tests/test_metrics.py | 2 +- tests/test_pluggable.py | 2 +- tests/transport/test__custom_tls_signer.py | 2 +- tests/transport/test__mtls_helper.py | 2 +- tests/transport/test_grpc.py | 2 +- tests/transport/test_mtls.py | 3 ++- tests/transport/test_requests.py | 2 +- tests/transport/test_urllib3.py | 2 +- tests_async/conftest.py | 2 +- tests_async/oauth2/test__client_async.py | 2 +- tests_async/oauth2/test_credentials_async.py | 2 +- tests_async/oauth2/test_id_token.py | 2 +- tests_async/oauth2/test_reauth_async.py | 2 +- .../oauth2/test_service_account_async.py | 2 +- tests_async/test__default_async.py | 2 +- tests_async/test_jwt_async.py | 2 +- .../transport/test_aiohttp_requests.py | 3 ++- 45 files changed, 45 insertions(+), 44 deletions(-) diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index 15589afb983a2fcdb5dd8972bfd455aac6483b38..eb5baf703fc7c600b0248028004402430146dae0 100644 GIT binary patch literal 10324 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 diff --git a/system_tests/system_tests_sync/test_mtls_http.py b/system_tests/system_tests_sync/test_mtls_http.py index bcf2a59da..20836ad43 100644 --- a/system_tests/system_tests_sync/test_mtls_http.py +++ b/system_tests/system_tests_sync/test_mtls_http.py @@ -13,7 +13,7 @@ # limitations under the License. import json -import mock +from unittest import mock import os import time from os import path diff --git a/testing/requirements.txt b/testing/requirements.txt index 27a0b3cb7..ccb53b061 100644 --- a/testing/requirements.txt +++ b/testing/requirements.txt @@ -1,7 +1,6 @@ # Unit test requirements flask freezegun -mock oauth2client pyopenssl pytest diff --git a/tests/compute_engine/test__metadata.py b/tests/compute_engine/test__metadata.py index a940feb25..9e135d8fa 100644 --- a/tests/compute_engine/test__metadata.py +++ b/tests/compute_engine/test__metadata.py @@ -17,8 +17,8 @@ import importlib import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/compute_engine/test_credentials.py b/tests/compute_engine/test_credentials.py index 507fea9fc..d6ca02bd6 100644 --- a/tests/compute_engine/test_credentials.py +++ b/tests/compute_engine/test_credentials.py @@ -13,8 +13,8 @@ # limitations under the License. import base64 import datetime +from unittest import mock -import mock import pytest # type: ignore import responses # type: ignore diff --git a/tests/conftest.py b/tests/conftest.py index 8080ec3fa..fbce2575e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,8 +14,8 @@ import os import sys +from unittest import mock -import mock import pytest # type: ignore diff --git a/tests/crypt/test__python_rsa.py b/tests/crypt/test__python_rsa.py index 4a4ebe44e..ec51e16bb 100644 --- a/tests/crypt/test__python_rsa.py +++ b/tests/crypt/test__python_rsa.py @@ -15,8 +15,8 @@ import io import json import os +from unittest import mock -import mock from pyasn1_modules import pem # type: ignore import pytest # type: ignore import rsa # type: ignore diff --git a/tests/oauth2/test__client.py b/tests/oauth2/test__client.py index 4cbd3a8ad..bff2aa46e 100644 --- a/tests/oauth2/test__client.py +++ b/tests/oauth2/test__client.py @@ -16,9 +16,9 @@ import http.client as http_client import json import os +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/oauth2/test_challenges.py b/tests/oauth2/test_challenges.py index a06f55283..f156f57d8 100644 --- a/tests/oauth2/test_challenges.py +++ b/tests/oauth2/test_challenges.py @@ -16,8 +16,8 @@ import base64 import sys +from unittest import mock -import mock import pytest # type: ignore import pyu2f # type: ignore diff --git a/tests/oauth2/test_credentials.py b/tests/oauth2/test_credentials.py index d265d22ed..88c63e9f5 100644 --- a/tests/oauth2/test_credentials.py +++ b/tests/oauth2/test_credentials.py @@ -17,8 +17,8 @@ import os import pickle import sys +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/oauth2/test_gdch_credentials.py b/tests/oauth2/test_gdch_credentials.py index 63075aba0..b889744e6 100644 --- a/tests/oauth2/test_gdch_credentials.py +++ b/tests/oauth2/test_gdch_credentials.py @@ -16,8 +16,8 @@ import datetime import json import os +from unittest import mock -import mock import pytest # type: ignore import requests diff --git a/tests/oauth2/test_id_token.py b/tests/oauth2/test_id_token.py index 40204f9d4..cdc4d3d61 100644 --- a/tests/oauth2/test_id_token.py +++ b/tests/oauth2/test_id_token.py @@ -14,8 +14,8 @@ import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import environment_vars diff --git a/tests/oauth2/test_reauth.py b/tests/oauth2/test_reauth.py index a95367a2b..ef19e4c84 100644 --- a/tests/oauth2/test_reauth.py +++ b/tests/oauth2/test_reauth.py @@ -13,8 +13,8 @@ # limitations under the License. import copy +from unittest import mock -import mock import pytest # type: ignore from google.auth import exceptions diff --git a/tests/oauth2/test_service_account.py b/tests/oauth2/test_service_account.py index 058fc3f7d..ecc1f0e3a 100644 --- a/tests/oauth2/test_service_account.py +++ b/tests/oauth2/test_service_account.py @@ -15,8 +15,8 @@ import datetime import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/oauth2/test_sts.py b/tests/oauth2/test_sts.py index e0fb4ae23..395aac9bc 100644 --- a/tests/oauth2/test_sts.py +++ b/tests/oauth2/test_sts.py @@ -14,9 +14,9 @@ import http.client as http_client import json +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import exceptions diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py index e45c65bd9..dd14bcebe 100644 --- a/tests/test__cloud_sdk.py +++ b/tests/test__cloud_sdk.py @@ -17,8 +17,8 @@ import os import subprocess import sys +from unittest import mock -import mock import pytest # type: ignore from google.auth import _cloud_sdk diff --git a/tests/test__default.py b/tests/test__default.py index 4f59c5497..a9a06eb78 100644 --- a/tests/test__default.py +++ b/tests/test__default.py @@ -14,8 +14,8 @@ import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _default diff --git a/tests/test__exponential_backoff.py b/tests/test__exponential_backoff.py index 06a54527e..a1b9540d1 100644 --- a/tests/test__exponential_backoff.py +++ b/tests/test__exponential_backoff.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import mock +from unittest import mock from google.auth import _exponential_backoff diff --git a/tests/test__oauth2client.py b/tests/test__oauth2client.py index 9f0c192ae..52276ae5c 100644 --- a/tests/test__oauth2client.py +++ b/tests/test__oauth2client.py @@ -16,8 +16,8 @@ import importlib import os import sys +from unittest import mock -import mock import pytest # type: ignore try: diff --git a/tests/test_app_engine.py b/tests/test_app_engine.py index ca085bd69..10b7bf371 100644 --- a/tests/test_app_engine.py +++ b/tests/test_app_engine.py @@ -13,8 +13,8 @@ # limitations under the License. import datetime +from unittest import mock -import mock import pytest # type: ignore from google.auth import app_engine diff --git a/tests/test_aws.py b/tests/test_aws.py index 39138ab12..0cfb60984 100644 --- a/tests/test_aws.py +++ b/tests/test_aws.py @@ -16,9 +16,9 @@ import http.client as http_client import json import os +from unittest import mock import urllib.parse -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_downscoped.py b/tests/test_downscoped.py index b011380bd..7507480a0 100644 --- a/tests/test_downscoped.py +++ b/tests/test_downscoped.py @@ -15,9 +15,9 @@ import datetime import http.client as http_client import json +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_external_account.py b/tests/test_external_account.py index fd511aa44..4df37ee7a 100644 --- a/tests/test_external_account.py +++ b/tests/test_external_account.py @@ -15,9 +15,9 @@ import datetime import http.client as http_client import json +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_external_account_authorized_user.py b/tests/test_external_account_authorized_user.py index 7ffd5078c..e95c1fbdb 100644 --- a/tests/test_external_account_authorized_user.py +++ b/tests/test_external_account_authorized_user.py @@ -15,8 +15,8 @@ import datetime import http.client as http_client import json +from unittest import mock -import mock import pytest # type: ignore from google.auth import exceptions diff --git a/tests/test_iam.py b/tests/test_iam.py index 6706afb4b..9a70713a7 100644 --- a/tests/test_iam.py +++ b/tests/test_iam.py @@ -16,8 +16,8 @@ import datetime import http.client as http_client import json +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_identity_pool.py b/tests/test_identity_pool.py index e469cf731..0500ddc74 100644 --- a/tests/test_identity_pool.py +++ b/tests/test_identity_pool.py @@ -16,9 +16,9 @@ import http.client as http_client import json import os +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_impersonated_credentials.py b/tests/test_impersonated_credentials.py index 161ff3b04..f2f197817 100644 --- a/tests/test_impersonated_credentials.py +++ b/tests/test_impersonated_credentials.py @@ -16,8 +16,8 @@ import http.client as http_client import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_jwt.py b/tests/test_jwt.py index 28660ea33..3029d6f1d 100644 --- a/tests/test_jwt.py +++ b/tests/test_jwt.py @@ -16,8 +16,8 @@ import datetime import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/test_metrics.py b/tests/test_metrics.py index ba9389267..b9036e38d 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -13,8 +13,8 @@ # limitations under the License. import platform +from unittest import mock -import mock from google.auth import metrics from google.auth import version diff --git a/tests/test_pluggable.py b/tests/test_pluggable.py index 9b0da9273..139453697 100644 --- a/tests/test_pluggable.py +++ b/tests/test_pluggable.py @@ -15,8 +15,8 @@ import json import os import subprocess +from unittest import mock -import mock import pytest # type: ignore from google.auth import exceptions diff --git a/tests/transport/test__custom_tls_signer.py b/tests/transport/test__custom_tls_signer.py index 5836b325a..cea40a68a 100644 --- a/tests/transport/test__custom_tls_signer.py +++ b/tests/transport/test__custom_tls_signer.py @@ -15,8 +15,8 @@ import base64 import ctypes import os +from unittest import mock -import mock import pytest # type: ignore from requests.packages.urllib3.util.ssl_ import create_urllib3_context # type: ignore import urllib3.contrib.pyopenssl # type: ignore diff --git a/tests/transport/test__mtls_helper.py b/tests/transport/test__mtls_helper.py index 1621a0530..20e07ec49 100644 --- a/tests/transport/test__mtls_helper.py +++ b/tests/transport/test__mtls_helper.py @@ -14,8 +14,8 @@ import os import re +from unittest import mock -import mock from OpenSSL import crypto import pytest # type: ignore diff --git a/tests/transport/test_grpc.py b/tests/transport/test_grpc.py index f62ab0eae..208ee5a56 100644 --- a/tests/transport/test_grpc.py +++ b/tests/transport/test_grpc.py @@ -15,8 +15,8 @@ import datetime import os import time +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests/transport/test_mtls.py b/tests/transport/test_mtls.py index b62063e47..71c6d873b 100644 --- a/tests/transport/test_mtls.py +++ b/tests/transport/test_mtls.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import mock +from unittest import mock + import pytest # type: ignore from google.auth import exceptions diff --git a/tests/transport/test_requests.py b/tests/transport/test_requests.py index d96281434..c3143b60c 100644 --- a/tests/transport/test_requests.py +++ b/tests/transport/test_requests.py @@ -17,9 +17,9 @@ import http.client as http_client import os import sys +from unittest import mock import freezegun -import mock import OpenSSL import pytest # type: ignore import requests diff --git a/tests/transport/test_urllib3.py b/tests/transport/test_urllib3.py index e83230032..50044df15 100644 --- a/tests/transport/test_urllib3.py +++ b/tests/transport/test_urllib3.py @@ -15,8 +15,8 @@ import http.client as http_client import os import sys +from unittest import mock -import mock import OpenSSL import pytest # type: ignore import urllib3 # type: ignore diff --git a/tests_async/conftest.py b/tests_async/conftest.py index f13dec0e4..55fd26463 100644 --- a/tests_async/conftest.py +++ b/tests_async/conftest.py @@ -14,8 +14,8 @@ import os import sys +from unittest import mock -import mock import pytest # type: ignore diff --git a/tests_async/oauth2/test__client_async.py b/tests_async/oauth2/test__client_async.py index add1b4e60..4b84ad20c 100644 --- a/tests_async/oauth2/test__client_async.py +++ b/tests_async/oauth2/test__client_async.py @@ -15,9 +15,9 @@ import datetime import http.client as http_client import json +from unittest import mock import urllib -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests_async/oauth2/test_credentials_async.py b/tests_async/oauth2/test_credentials_async.py index a328cc3cb..ca5af9ce8 100644 --- a/tests_async/oauth2/test_credentials_async.py +++ b/tests_async/oauth2/test_credentials_async.py @@ -17,8 +17,8 @@ import os import pickle import sys +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests_async/oauth2/test_id_token.py b/tests_async/oauth2/test_id_token.py index 9be086dca..51d85daf2 100644 --- a/tests_async/oauth2/test_id_token.py +++ b/tests_async/oauth2/test_id_token.py @@ -14,8 +14,8 @@ import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import environment_vars diff --git a/tests_async/oauth2/test_reauth_async.py b/tests_async/oauth2/test_reauth_async.py index 40ca92717..4874a3728 100644 --- a/tests_async/oauth2/test_reauth_async.py +++ b/tests_async/oauth2/test_reauth_async.py @@ -13,8 +13,8 @@ # limitations under the License. import copy +from unittest import mock -import mock import pytest # type: ignore from google.auth import exceptions diff --git a/tests_async/oauth2/test_service_account_async.py b/tests_async/oauth2/test_service_account_async.py index 176992f77..5a9a89fca 100644 --- a/tests_async/oauth2/test_service_account_async.py +++ b/tests_async/oauth2/test_service_account_async.py @@ -13,8 +13,8 @@ # limitations under the License. import datetime +from unittest import mock -import mock import pytest # type: ignore from google.auth import _helpers diff --git a/tests_async/test__default_async.py b/tests_async/test__default_async.py index e1dbb1c09..a1268bdc0 100644 --- a/tests_async/test__default_async.py +++ b/tests_async/test__default_async.py @@ -14,8 +14,8 @@ import json import os +from unittest import mock -import mock import pytest # type: ignore from google.auth import _credentials_async as credentials diff --git a/tests_async/test_jwt_async.py b/tests_async/test_jwt_async.py index f24a0a99d..9d9eca4e2 100644 --- a/tests_async/test_jwt_async.py +++ b/tests_async/test_jwt_async.py @@ -14,8 +14,8 @@ import datetime import json +from unittest import mock -import mock import pytest # type: ignore from google.auth import _jwt_async as jwt_async diff --git a/tests_async/transport/test_aiohttp_requests.py b/tests_async/transport/test_aiohttp_requests.py index d00955a7d..550a37a9b 100644 --- a/tests_async/transport/test_aiohttp_requests.py +++ b/tests_async/transport/test_aiohttp_requests.py @@ -12,9 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +from unittest import mock + import aiohttp # type: ignore from aioresponses import aioresponses, core # type: ignore -import mock import pytest # type: ignore from tests_async.transport import async_compliance From c159ebeff33290cb062ba8e1673f17e2c510fa39 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Tue, 25 Jul 2023 14:51:55 -0700 Subject: [PATCH 2/4] Fix mypy error. --- tests_async/oauth2/test_reauth_async.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_async/oauth2/test_reauth_async.py b/tests_async/oauth2/test_reauth_async.py index 4874a3728..2b05bdb85 100644 --- a/tests_async/oauth2/test_reauth_async.py +++ b/tests_async/oauth2/test_reauth_async.py @@ -22,7 +22,7 @@ from google.oauth2 import reauth -MOCK_REQUEST = mock.AsyncMock(spec=["transport.Request"]) +MOCK_REQUEST = mock.AsyncMock(spec=["transport.Request"]) # type: ignore CHALLENGES_RESPONSE_TEMPLATE = { "status": "CHALLENGE_REQUIRED", "sessionId": "123", From 0aa60ead61d67988a535fd53ea878d9f50ade2c2 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Tue, 25 Jul 2023 16:05:05 -0700 Subject: [PATCH 3/4] Run formatter --- tests_async/oauth2/test_reauth_async.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_async/oauth2/test_reauth_async.py b/tests_async/oauth2/test_reauth_async.py index 2b05bdb85..4b3e28edd 100644 --- a/tests_async/oauth2/test_reauth_async.py +++ b/tests_async/oauth2/test_reauth_async.py @@ -22,7 +22,7 @@ from google.oauth2 import reauth -MOCK_REQUEST = mock.AsyncMock(spec=["transport.Request"]) # type: ignore +MOCK_REQUEST = mock.AsyncMock(spec=["transport.Request"]) # type: ignore CHALLENGES_RESPONSE_TEMPLATE = { "status": "CHALLENGE_REQUIRED", "sessionId": "123", From 9eca37e47340b1b8e8209c7b16e10ba4b78da1f5 Mon Sep 17 00:00:00 2001 From: Carl Lundin Date: Tue, 31 Oct 2023 14:18:48 -0700 Subject: [PATCH 4/4] Use mainline system test creds. --- system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index eb5baf703fc7c600b0248028004402430146dae0..722dfcd24704ef8c0b25e9b21d2dc40c62c303fd 100644 GIT binary patch literal 10324 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 mI+To20g$87)