diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 108063d4..6b8a73b3 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -1,3 +1,3 @@ docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:4ee57a76a176ede9087c14330c625a71553cf9c72828b2c0ca12f5338171ba60 + digest: sha256:36a95b8f494e4674dc9eee9af98961293b51b86b3649942aac800ae6c1f796d4 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d1ef556d..25128855 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -3,9 +3,10 @@ # # For syntax help see: # https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax +# Note: This file is autogenerated. To make changes to the codeowner team, please update .repo-metadata.json. -# The @googleapis/yoshi-python is the default owner for changes in this repo -* @averikitsch @googleapis/yoshi-python +# @googleapis/yoshi-python @googleapis/serverless-team are the default owners for changes in this repo +* @googleapis/yoshi-python @googleapis/serverless-team - -/samples/**/*.py @averikitsch @googleapis/python-samples-owners +# @googleapis/python-samples-reviewers @googleapis/serverless-team are the default owners for samples changes +/samples/ @googleapis/python-samples-reviewers @googleapis/serverless-team diff --git a/.repo-metadata.json b/.repo-metadata.json index 438d0556..2144604c 100644 --- a/.repo-metadata.json +++ b/.repo-metadata.json @@ -2,9 +2,9 @@ "name": "cloudtasks", "name_pretty": "Cloud Tasks", "product_documentation": "https://cloud.google.com/tasks/docs/", - "client_documentation": "https://googleapis.dev/python/cloudtasks/latest", + "client_documentation": "https://cloud.google.com/python/docs/reference/cloudtasks/latest", "issue_tracker": "https://issuetracker.google.com/savedsearches/5433985", - "release_level": "ga", + "release_level": "stable", "language": "python", "library_type": "GAPIC_AUTO", "repo": "googleapis/python-tasks", @@ -12,5 +12,6 @@ "api_id": "cloudtasks.googleapis.com", "requires_billing": true, "default_version": "v2", - "codeowner_team": "" + "codeowner_team": "@googleapis/serverless-team", + "api_shortname": "cloudtasks" } diff --git a/CHANGELOG.md b/CHANGELOG.md index e57ca380..1d4ddec8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://pypi.org/project/google-cloud-tasks/#history +### [2.7.2](https://www.github.com/googleapis/python-tasks/compare/v2.7.1...v2.7.2) (2022-01-08) + + +### Documentation + +* fix docstring formatting ([#196](https://www.github.com/googleapis/python-tasks/issues/196)) ([e7a3461](https://www.github.com/googleapis/python-tasks/commit/e7a3461a34229c210e63590370fa6eee4d06630a)) + ### [2.7.1](https://www.github.com/googleapis/python-tasks/compare/v2.7.0...v2.7.1) (2021-11-01) diff --git a/README.rst b/README.rst index ad2a545b..2b26ce76 100644 --- a/README.rst +++ b/README.rst @@ -16,7 +16,7 @@ requests. .. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-tasks.svg :target: https://pypi.org/project/google-cloud-tasks/ .. _Cloud Tasks API: https://cloud.google.com/tasks -.. _Client Library Documentation: https://googleapis.dev/python/cloudtasks/latest +.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/cloudtasks/latest .. _Product Documentation: https://cloud.google.com/tasks Quick Start diff --git a/docs/index.rst b/docs/index.rst index 26619de7..babf6245 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -2,56 +2,52 @@ .. include:: multiprocessing.rst -API Reference -------------- +This package includes clients for multiple versions of Cloud Tasks. +By default, you will get version ``tasks_v2``. -This package includes clients for multiple versions of the Tasks -API. By default, you will get ``v2``, the latest version. +API Reference +------------- .. toctree:: :maxdepth: 2 - + tasks_v2/services tasks_v2/types +API Reference +------------- +.. toctree:: + :maxdepth: 2 -The previous beta releases, spelled ``v2beta3`` and ``v2beta2``, are provided to continue to -support code previously written against them. In order to use them, you -will want to import from e.g. ``google.cloud.tasks_v2beta3`` in lieu of -``google.cloud.tasks`` (or the equivalent ``google.cloud.tasks_v2``). - -v2beta3: + tasks_v2beta2/services + tasks_v2beta2/types +API Reference +------------- .. toctree:: :maxdepth: 2 tasks_v2beta3/services tasks_v2beta3/types - -v2beta2: -.. toctree:: - :maxdepth: 2 - - tasks_v2beta2/services - tasks_v2beta2/types Migration Guide --------------- -See the guide below for instructions on migrating to the 2.x release of this library. +See the guide below for instructions on migrating to the latest version. .. toctree:: :maxdepth: 2 - UPGRADING +  UPGRADING + Changelog --------- -For a list of all `google-cloud-tasks` releases. +For a list of all ``google-cloud-tasks`` releases: .. toctree:: :maxdepth: 2 - changelog \ No newline at end of file + changelog diff --git a/google/cloud/tasks_v2/services/cloud_tasks/async_client.py b/google/cloud/tasks_v2/services/cloud_tasks/async_client.py index 30368be8..250d60b7 100644 --- a/google/cloud/tasks_v2/services/cloud_tasks/async_client.py +++ b/google/cloud/tasks_v2/services/cloud_tasks/async_client.py @@ -19,14 +19,17 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core.client_options import ClientOptions # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core.client_options import ClientOptions +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2.services.cloud_tasks import pagers from google.cloud.tasks_v2.types import cloudtasks diff --git a/google/cloud/tasks_v2/services/cloud_tasks/client.py b/google/cloud/tasks_v2/services/cloud_tasks/client.py index d78f1cca..04e5cd06 100644 --- a/google/cloud/tasks_v2/services/cloud_tasks/client.py +++ b/google/cloud/tasks_v2/services/cloud_tasks/client.py @@ -14,23 +14,25 @@ # limitations under the License. # from collections import OrderedDict -from distutils import util import os import re from typing import Dict, Optional, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core import client_options as client_options_lib # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2.services.cloud_tasks import pagers from google.cloud.tasks_v2.types import cloudtasks @@ -309,8 +311,15 @@ def __init__( client_options = client_options_lib.ClientOptions() # Create SSL credentials for mutual TLS if needed. - use_client_cert = bool( - util.strtobool(os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false")) + if os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") not in ( + "true", + "false", + ): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + use_client_cert = ( + os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true" ) client_cert_source_func = None diff --git a/google/cloud/tasks_v2/services/cloud_tasks/transports/base.py b/google/cloud/tasks_v2/services/cloud_tasks/transports/base.py index 7f09c669..58dfe560 100644 --- a/google/cloud/tasks_v2/services/cloud_tasks/transports/base.py +++ b/google/cloud/tasks_v2/services/cloud_tasks/transports/base.py @@ -18,10 +18,10 @@ import pkg_resources import google.auth # type: ignore -import google.api_core # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +import google.api_core +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore @@ -106,7 +106,6 @@ def __init__( credentials, _ = google.auth.load_credentials_from_file( credentials_file, **scopes_kwargs, quota_project_id=quota_project_id ) - elif credentials is None: credentials, _ = google.auth.default( **scopes_kwargs, quota_project_id=quota_project_id diff --git a/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc.py b/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc.py index fac91df7..47efb962 100644 --- a/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc.py +++ b/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc.py @@ -16,8 +16,8 @@ import warnings from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import grpc_helpers # type: ignore -from google.api_core import gapic_v1 # type: ignore +from google.api_core import grpc_helpers +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc_asyncio.py b/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc_asyncio.py index bbcd2d04..8a25d355 100644 --- a/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc_asyncio.py +++ b/google/cloud/tasks_v2/services/cloud_tasks/transports/grpc_asyncio.py @@ -16,8 +16,8 @@ import warnings from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1 # type: ignore -from google.api_core import grpc_helpers_async # type: ignore +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2/types/target.py b/google/cloud/tasks_v2/types/target.py index 3920caec..97da420b 100644 --- a/google/cloud/tasks_v2/types/target.py +++ b/google/cloud/tasks_v2/types/target.py @@ -120,8 +120,8 @@ class HttpRequest(proto.Message): [HttpRequest.url][google.cloud.tasks.v2.HttpRequest.url]. - Content-Length: This will be computed by Cloud Tasks. - User-Agent: This will be set to ``"Google-Cloud-Tasks"``. - - X-Google-\*: Google use only. - - X-AppEngine-\*: Google use only. + - ``X-Google-*``: Google use only. + - ``X-AppEngine-*``: Google use only. ``Content-Type`` won't be set by Cloud Tasks. You can explicitly set ``Content-Type`` to a media type when the @@ -150,6 +150,7 @@ class HttpRequest(proto.Message): This type of authorization should generally only be used when calling Google APIs hosted on \*.googleapis.com. + This field is a member of `oneof`_ ``authorization_header``. oidc_token (google.cloud.tasks_v2.types.OidcToken): If specified, an @@ -160,6 +161,7 @@ class HttpRequest(proto.Message): This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself. + This field is a member of `oneof`_ ``authorization_header``. """ @@ -301,8 +303,8 @@ class AppEngineHttpRequest(proto.Message): The headers below cannot be set or overridden: - ``Host`` - - ``X-Google-\*`` - - ``X-AppEngine-\*`` + - ``X-Google-*`` + - ``X-AppEngine-*`` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the diff --git a/google/cloud/tasks_v2/types/task.py b/google/cloud/tasks_v2/types/task.py index cb0bf0f3..58102e05 100644 --- a/google/cloud/tasks_v2/types/task.py +++ b/google/cloud/tasks_v2/types/task.py @@ -68,12 +68,14 @@ class Task(proto.Message): An App Engine task is a task that has [AppEngineHttpRequest][google.cloud.tasks.v2.AppEngineHttpRequest] set. + This field is a member of `oneof`_ ``message_type``. http_request (google.cloud.tasks_v2.types.HttpRequest): HTTP request that is sent to the worker. An HTTP task is a task that has [HttpRequest][google.cloud.tasks.v2.HttpRequest] set. + This field is a member of `oneof`_ ``message_type``. schedule_time (google.protobuf.timestamp_pb2.Timestamp): The time when the task is scheduled to be attempted or diff --git a/google/cloud/tasks_v2beta2/services/cloud_tasks/async_client.py b/google/cloud/tasks_v2beta2/services/cloud_tasks/async_client.py index 327e499e..072eb6bd 100644 --- a/google/cloud/tasks_v2beta2/services/cloud_tasks/async_client.py +++ b/google/cloud/tasks_v2beta2/services/cloud_tasks/async_client.py @@ -19,14 +19,17 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core.client_options import ClientOptions # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core.client_options import ClientOptions +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2beta2.services.cloud_tasks import pagers from google.cloud.tasks_v2beta2.types import cloudtasks diff --git a/google/cloud/tasks_v2beta2/services/cloud_tasks/client.py b/google/cloud/tasks_v2beta2/services/cloud_tasks/client.py index 07d6cb1e..7188dc89 100644 --- a/google/cloud/tasks_v2beta2/services/cloud_tasks/client.py +++ b/google/cloud/tasks_v2beta2/services/cloud_tasks/client.py @@ -14,23 +14,25 @@ # limitations under the License. # from collections import OrderedDict -from distutils import util import os import re from typing import Dict, Optional, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core import client_options as client_options_lib # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2beta2.services.cloud_tasks import pagers from google.cloud.tasks_v2beta2.types import cloudtasks @@ -309,8 +311,15 @@ def __init__( client_options = client_options_lib.ClientOptions() # Create SSL credentials for mutual TLS if needed. - use_client_cert = bool( - util.strtobool(os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false")) + if os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") not in ( + "true", + "false", + ): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + use_client_cert = ( + os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true" ) client_cert_source_func = None diff --git a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/base.py b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/base.py index 39995981..28d7ef5b 100644 --- a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/base.py +++ b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/base.py @@ -18,10 +18,10 @@ import pkg_resources import google.auth # type: ignore -import google.api_core # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +import google.api_core +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore @@ -106,7 +106,6 @@ def __init__( credentials, _ = google.auth.load_credentials_from_file( credentials_file, **scopes_kwargs, quota_project_id=quota_project_id ) - elif credentials is None: credentials, _ = google.auth.default( **scopes_kwargs, quota_project_id=quota_project_id diff --git a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc.py b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc.py index ed244b9d..a5b58157 100644 --- a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc.py +++ b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc.py @@ -16,8 +16,8 @@ import warnings from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import grpc_helpers # type: ignore -from google.api_core import gapic_v1 # type: ignore +from google.api_core import grpc_helpers +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc_asyncio.py b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc_asyncio.py index 989147ff..c58456b2 100644 --- a/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc_asyncio.py +++ b/google/cloud/tasks_v2beta2/services/cloud_tasks/transports/grpc_asyncio.py @@ -16,8 +16,8 @@ import warnings from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1 # type: ignore -from google.api_core import grpc_helpers_async # type: ignore +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2beta2/types/queue.py b/google/cloud/tasks_v2beta2/types/queue.py index e8eaccda..cdb04733 100644 --- a/google/cloud/tasks_v2beta2/types/queue.py +++ b/google/cloud/tasks_v2beta2/types/queue.py @@ -68,12 +68,14 @@ class Queue(proto.Message): An App Engine queue is a queue that has an [AppEngineHttpTarget][google.cloud.tasks.v2beta2.AppEngineHttpTarget]. + This field is a member of `oneof`_ ``target_type``. pull_target (google.cloud.tasks_v2beta2.types.PullTarget): Pull target. A pull queue is a queue that has a [PullTarget][google.cloud.tasks.v2beta2.PullTarget]. + This field is a member of `oneof`_ ``target_type``. rate_limits (google.cloud.tasks_v2beta2.types.RateLimits): Rate limits for task dispatches. @@ -308,10 +310,12 @@ class RetryConfig(proto.Message): Cloud Tasks will attempt the task ``max_attempts`` times (that is, if the first attempt fails, then there will be ``max_attempts - 1`` retries). Must be > 0. + This field is a member of `oneof`_ ``num_attempts``. unlimited_attempts (bool): If true, then the number of attempts is unlimited. + This field is a member of `oneof`_ ``num_attempts``. max_retry_duration (google.protobuf.duration_pb2.Duration): If positive, ``max_retry_duration`` specifies the time limit diff --git a/google/cloud/tasks_v2beta2/types/target.py b/google/cloud/tasks_v2beta2/types/target.py index 5d61df4d..37be027f 100644 --- a/google/cloud/tasks_v2beta2/types/target.py +++ b/google/cloud/tasks_v2beta2/types/target.py @@ -251,8 +251,8 @@ class AppEngineHttpRequest(proto.Message): The headers below cannot be set or overridden: - ``Host`` - - ``X-Google-\*`` - - ``X-AppEngine-\*`` + - ``X-Google-*`` + - ``X-AppEngine-*`` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the diff --git a/google/cloud/tasks_v2beta2/types/task.py b/google/cloud/tasks_v2beta2/types/task.py index c5f65760..7d203954 100644 --- a/google/cloud/tasks_v2beta2/types/task.py +++ b/google/cloud/tasks_v2beta2/types/task.py @@ -71,6 +71,7 @@ class Task(proto.Message): An App Engine task is a task that has [AppEngineHttpRequest][google.cloud.tasks.v2beta2.AppEngineHttpRequest] set. + This field is a member of `oneof`_ ``payload_type``. pull_message (google.cloud.tasks_v2beta2.types.PullMessage): [LeaseTasks][google.cloud.tasks.v2beta2.CloudTasks.LeaseTasks] @@ -80,6 +81,7 @@ class Task(proto.Message): A pull task is a task that has [PullMessage][google.cloud.tasks.v2beta2.PullMessage] set. + This field is a member of `oneof`_ ``payload_type``. schedule_time (google.protobuf.timestamp_pb2.Timestamp): The time when the task is scheduled to be attempted. diff --git a/google/cloud/tasks_v2beta3/services/cloud_tasks/async_client.py b/google/cloud/tasks_v2beta3/services/cloud_tasks/async_client.py index cd05f11e..e65ae368 100644 --- a/google/cloud/tasks_v2beta3/services/cloud_tasks/async_client.py +++ b/google/cloud/tasks_v2beta3/services/cloud_tasks/async_client.py @@ -19,14 +19,17 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core.client_options import ClientOptions # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core.client_options import ClientOptions +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2beta3.services.cloud_tasks import pagers from google.cloud.tasks_v2beta3.types import cloudtasks diff --git a/google/cloud/tasks_v2beta3/services/cloud_tasks/client.py b/google/cloud/tasks_v2beta3/services/cloud_tasks/client.py index 66d0ea5f..1012117c 100644 --- a/google/cloud/tasks_v2beta3/services/cloud_tasks/client.py +++ b/google/cloud/tasks_v2beta3/services/cloud_tasks/client.py @@ -14,23 +14,25 @@ # limitations under the License. # from collections import OrderedDict -from distutils import util import os import re from typing import Dict, Optional, Sequence, Tuple, Type, Union import pkg_resources -from google.api_core import client_options as client_options_lib # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +from google.api_core import client_options as client_options_lib +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore -OptionalRetry = Union[retries.Retry, object] +try: + OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.Retry, object] # type: ignore from google.cloud.tasks_v2beta3.services.cloud_tasks import pagers from google.cloud.tasks_v2beta3.types import cloudtasks @@ -309,8 +311,15 @@ def __init__( client_options = client_options_lib.ClientOptions() # Create SSL credentials for mutual TLS if needed. - use_client_cert = bool( - util.strtobool(os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false")) + if os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") not in ( + "true", + "false", + ): + raise ValueError( + "Environment variable `GOOGLE_API_USE_CLIENT_CERTIFICATE` must be either `true` or `false`" + ) + use_client_cert = ( + os.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true" ) client_cert_source_func = None diff --git a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/base.py b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/base.py index 050ec955..f62c8386 100644 --- a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/base.py +++ b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/base.py @@ -18,10 +18,10 @@ import pkg_resources import google.auth # type: ignore -import google.api_core # type: ignore -from google.api_core import exceptions as core_exceptions # type: ignore -from google.api_core import gapic_v1 # type: ignore -from google.api_core import retry as retries # type: ignore +import google.api_core +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1 +from google.api_core import retry as retries from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore @@ -106,7 +106,6 @@ def __init__( credentials, _ = google.auth.load_credentials_from_file( credentials_file, **scopes_kwargs, quota_project_id=quota_project_id ) - elif credentials is None: credentials, _ = google.auth.default( **scopes_kwargs, quota_project_id=quota_project_id diff --git a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc.py b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc.py index 77109749..3f0bb485 100644 --- a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc.py +++ b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc.py @@ -16,8 +16,8 @@ import warnings from typing import Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import grpc_helpers # type: ignore -from google.api_core import gapic_v1 # type: ignore +from google.api_core import grpc_helpers +from google.api_core import gapic_v1 import google.auth # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc_asyncio.py b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc_asyncio.py index 542d9ade..faad7554 100644 --- a/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc_asyncio.py +++ b/google/cloud/tasks_v2beta3/services/cloud_tasks/transports/grpc_asyncio.py @@ -16,8 +16,8 @@ import warnings from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union -from google.api_core import gapic_v1 # type: ignore -from google.api_core import grpc_helpers_async # type: ignore +from google.api_core import gapic_v1 +from google.api_core import grpc_helpers_async from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore diff --git a/google/cloud/tasks_v2beta3/types/queue.py b/google/cloud/tasks_v2beta3/types/queue.py index ef4455a6..85b10bde 100644 --- a/google/cloud/tasks_v2beta3/types/queue.py +++ b/google/cloud/tasks_v2beta3/types/queue.py @@ -72,6 +72,7 @@ class Queue(proto.Message): this queue. [Http tasks][google.cloud.tasks.v2beta3.HttpRequest] are not affected by this proto. + This field is a member of `oneof`_ ``queue_type``. rate_limits (google.cloud.tasks_v2beta3.types.RateLimits): Rate limits for task dispatches. diff --git a/google/cloud/tasks_v2beta3/types/target.py b/google/cloud/tasks_v2beta3/types/target.py index d1899617..36dbb3c1 100644 --- a/google/cloud/tasks_v2beta3/types/target.py +++ b/google/cloud/tasks_v2beta3/types/target.py @@ -154,8 +154,8 @@ class HttpRequest(proto.Message): [HttpRequest.url][google.cloud.tasks.v2beta3.HttpRequest.url]. - Content-Length: This will be computed by Cloud Tasks. - User-Agent: This will be set to ``"Google-Cloud-Tasks"``. - - X-Google-\*: Google use only. - - X-AppEngine-\*: Google use only. + - ``X-Google-*``: Google use only. + - ``X-AppEngine-*``: Google use only. ``Content-Type`` won't be set by Cloud Tasks. You can explicitly set ``Content-Type`` to a media type when the @@ -184,6 +184,7 @@ class HttpRequest(proto.Message): This type of authorization should generally only be used when calling Google APIs hosted on \*.googleapis.com. + This field is a member of `oneof`_ ``authorization_header``. oidc_token (google.cloud.tasks_v2beta3.types.OidcToken): If specified, an @@ -194,6 +195,7 @@ class HttpRequest(proto.Message): This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself. + This field is a member of `oneof`_ ``authorization_header``. """ @@ -371,8 +373,8 @@ class AppEngineHttpRequest(proto.Message): The headers below cannot be set or overridden: - ``Host`` - - ``X-Google-\*`` - - ``X-AppEngine-\*`` + - ``X-Google-*`` + - ``X-AppEngine-*`` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the diff --git a/google/cloud/tasks_v2beta3/types/task.py b/google/cloud/tasks_v2beta3/types/task.py index a567cd8f..3fb08466 100644 --- a/google/cloud/tasks_v2beta3/types/task.py +++ b/google/cloud/tasks_v2beta3/types/task.py @@ -68,12 +68,14 @@ class Task(proto.Message): An App Engine task is a task that has [AppEngineHttpRequest][google.cloud.tasks.v2beta3.AppEngineHttpRequest] set. + This field is a member of `oneof`_ ``payload_type``. http_request (google.cloud.tasks_v2beta3.types.HttpRequest): HTTP request that is sent to the task's target. An HTTP task is a task that has [HttpRequest][google.cloud.tasks.v2beta3.HttpRequest] set. + This field is a member of `oneof`_ ``payload_type``. pull_message (google.cloud.tasks_v2beta3.types.PullMessage): Pull Message contained in a task in a @@ -85,6 +87,7 @@ class Task(proto.Message): queues to provide a way to inspect contents of pull tasks through the [CloudTasks.GetTask][google.cloud.tasks.v2beta3.CloudTasks.GetTask]. + This field is a member of `oneof`_ ``payload_type``. schedule_time (google.protobuf.timestamp_pb2.Timestamp): The time when the task is scheduled to be attempted. diff --git a/noxfile.py b/noxfile.py index f041f1f5..2a2001c4 100644 --- a/noxfile.py +++ b/noxfile.py @@ -175,7 +175,7 @@ def cover(session): test runs (not system test runs), and then erases coverage data. """ session.install("coverage", "pytest-cov") - session.run("coverage", "report", "--show-missing", "--fail-under=98") + session.run("coverage", "report", "--show-missing", "--fail-under=100") session.run("coverage", "erase") diff --git a/owlbot.py b/owlbot.py deleted file mode 100644 index b85eed05..00000000 --- a/owlbot.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script is used to synthesize generated parts of this library.""" - -import synthtool as s -import synthtool.gcp as gcp -from synthtool.languages import python -import logging - -logging.basicConfig(level=logging.DEBUG) - -common = gcp.CommonTemplates() - -default_version = "v2" - -for library in s.get_staging_dirs(default_version): - # Fix docstring. - s.replace(library / "google/cloud/*/types/target.py", "X-Google-\*", "X-Google-\\*") - s.replace(library / "google/cloud/*/types/target.py", "X-AppEngine-\*", "X-AppEngine-\\*") - - # Comment out broken assertion in unit test - # https://github.com/googleapis/gapic-generator-python/issues/897 - s.replace( - library / "tests/**/test_cloud_tasks.py", - "assert args\[0\]\.lease_duration == duration_pb2\.Duration\(seconds=751\)", - "# assert args[0].lease_duration == duration_pb2.Duration(seconds=751)" - ) - s.replace( - library / "tests/**/test_cloud_tasks.py", - "assert args\[0\].schedule_time == timestamp_pb2\.Timestamp\(seconds=751\)", - "# assert args[0].schedule_time == timestamp_pb2.Timestamp(seconds=751)" - ) - - excludes = ["README.rst", "setup.py", "nox*.py", "docs/index.rst", "*.tar.gz"] - s.copy(library, excludes=excludes) - -s.remove_staging_dirs() - -# ---------------------------------------------------------------------------- -# Add templated files -# ---------------------------------------------------------------------------- -templated_files = common.py_library( - samples=False, # set to True only if there are samples - microgenerator=True, - cov_level=98, -) -s.move( - templated_files, excludes=[".coveragerc"] -) # microgenerator has a good .coveragerc file - -# ---------------------------------------------------------------------------- -# Samples templates -# ---------------------------------------------------------------------------- -python.py_samples(skip_readmes=True) - -s.shell.run(["nox", "-s", "blacken"], hide_output=False) diff --git a/samples/snippets/create_http_task_with_token.py b/samples/snippets/create_http_task_with_token.py index f09e8538..88888bcd 100644 --- a/samples/snippets/create_http_task_with_token.py +++ b/samples/snippets/create_http_task_with_token.py @@ -16,13 +16,7 @@ def create_http_task( - project, - queue, - location, - url, - service_account_email, - audience=None, - payload=None, + project, queue, location, url, service_account_email, audience=None, payload=None, ): # [START cloud_tasks_create_http_task_with_token] """Create a task for a given queue with an arbitrary payload.""" @@ -49,7 +43,10 @@ def create_http_task( "http_request": { # Specify the type of request. "http_method": tasks_v2.HttpMethod.POST, "url": url, # The full url path that the task will be sent to. - "oidc_token": {"service_account_email": service_account_email, "audience": audience}, + "oidc_token": { + "service_account_email": service_account_email, + "audience": audience, + }, } } diff --git a/samples/snippets/noxfile.py b/samples/snippets/noxfile.py index 93a9122c..3bbef5d5 100644 --- a/samples/snippets/noxfile.py +++ b/samples/snippets/noxfile.py @@ -14,6 +14,7 @@ from __future__ import print_function +import glob import os from pathlib import Path import sys @@ -184,37 +185,44 @@ def blacken(session: nox.sessions.Session) -> None: def _session_tests( session: nox.sessions.Session, post_install: Callable = None ) -> None: - if TEST_CONFIG["pip_version_override"]: - pip_version = TEST_CONFIG["pip_version_override"] - session.install(f"pip=={pip_version}") - """Runs py.test for a particular project.""" - if os.path.exists("requirements.txt"): - if os.path.exists("constraints.txt"): - session.install("-r", "requirements.txt", "-c", "constraints.txt") - else: - session.install("-r", "requirements.txt") - - if os.path.exists("requirements-test.txt"): - if os.path.exists("constraints-test.txt"): - session.install("-r", "requirements-test.txt", "-c", "constraints-test.txt") - else: - session.install("-r", "requirements-test.txt") - - if INSTALL_LIBRARY_FROM_SOURCE: - session.install("-e", _get_repo_root()) - - if post_install: - post_install(session) - - session.run( - "pytest", - *(PYTEST_COMMON_ARGS + session.posargs), - # Pytest will return 5 when no tests are collected. This can happen - # on travis where slow and flaky tests are excluded. - # See http://doc.pytest.org/en/latest/_modules/_pytest/main.html - success_codes=[0, 5], - env=get_pytest_env_vars(), - ) + # check for presence of tests + test_list = glob.glob("*_test.py") + glob.glob("test_*.py") + if len(test_list) == 0: + print("No tests found, skipping directory.") + else: + if TEST_CONFIG["pip_version_override"]: + pip_version = TEST_CONFIG["pip_version_override"] + session.install(f"pip=={pip_version}") + """Runs py.test for a particular project.""" + if os.path.exists("requirements.txt"): + if os.path.exists("constraints.txt"): + session.install("-r", "requirements.txt", "-c", "constraints.txt") + else: + session.install("-r", "requirements.txt") + + if os.path.exists("requirements-test.txt"): + if os.path.exists("constraints-test.txt"): + session.install( + "-r", "requirements-test.txt", "-c", "constraints-test.txt" + ) + else: + session.install("-r", "requirements-test.txt") + + if INSTALL_LIBRARY_FROM_SOURCE: + session.install("-e", _get_repo_root()) + + if post_install: + post_install(session) + + session.run( + "pytest", + *(PYTEST_COMMON_ARGS + session.posargs), + # Pytest will return 5 when no tests are collected. This can happen + # on travis where slow and flaky tests are excluded. + # See http://doc.pytest.org/en/latest/_modules/_pytest/main.html + success_codes=[0, 5], + env=get_pytest_env_vars(), + ) @nox.session(python=ALL_VERSIONS) diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index dd1833fe..912c8dda 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1 +1 @@ -google-cloud-tasks==2.7.0 +google-cloud-tasks==2.7.1 diff --git a/setup.py b/setup.py index 0c18f8c1..a99bf79e 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ name = "google-cloud-tasks" description = "Cloud Tasks API API client library" -version = "2.7.1" +version = "2.7.2" release_status = "Development Status :: 5 - Production/Stable" dependencies = [ # NOTE: Maintainers, please do not require google-api-core>=2.x.x diff --git a/tests/unit/gapic/tasks_v2/test_cloud_tasks.py b/tests/unit/gapic/tasks_v2/test_cloud_tasks.py index 3531564f..3c511e52 100644 --- a/tests/unit/gapic/tasks_v2/test_cloud_tasks.py +++ b/tests/unit/gapic/tasks_v2/test_cloud_tasks.py @@ -251,20 +251,20 @@ def test_cloud_tasks_client_client_options( # unsupported value. with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): with pytest.raises(MutualTLSChannelError): - client = client_class() + client = client_class(transport=transport_name) # Check the case GOOGLE_API_USE_CLIENT_CERTIFICATE has unsupported value. with mock.patch.dict( os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} ): with pytest.raises(ValueError): - client = client_class() + client = client_class(transport=transport_name) # Check the case quota_project_id is provided options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -321,7 +321,7 @@ def test_cloud_tasks_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) if use_client_cert_env == "false": expected_client_cert_source = None @@ -416,7 +416,7 @@ def test_cloud_tasks_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -447,7 +447,7 @@ def test_cloud_tasks_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -478,9 +478,8 @@ def test_cloud_tasks_client_client_options_from_dict(): ) -def test_list_queues( - transport: str = "grpc", request_type=cloudtasks.ListQueuesRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ListQueuesRequest, dict,]) +def test_list_queues(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -507,10 +506,6 @@ def test_list_queues( assert response.next_page_token == "next_page_token_value" -def test_list_queues_from_dict(): - test_list_queues(request_type=dict) - - def test_list_queues_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -627,7 +622,9 @@ def test_list_queues_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_queues_flattened_error(): @@ -661,7 +658,9 @@ async def test_list_queues_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -676,8 +675,10 @@ async def test_list_queues_flattened_error_async(): ) -def test_list_queues_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -708,8 +709,10 @@ def test_list_queues_pager(): assert all(isinstance(i, queue.Queue) for i in results) -def test_list_queues_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -790,7 +793,8 @@ async def test_list_queues_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetQueueRequest, dict,]) +def test_get_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -818,10 +822,6 @@ def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequ assert response.state == queue.Queue.State.RUNNING -def test_get_queue_from_dict(): - test_get_queue(request_type=dict) - - def test_get_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -937,7 +937,9 @@ def test_get_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_queue_flattened_error(): @@ -969,7 +971,9 @@ async def test_get_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -984,9 +988,8 @@ async def test_get_queue_flattened_error_async(): ) -def test_create_queue( - transport: str = "grpc", request_type=cloudtasks.CreateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateQueueRequest, dict,]) +def test_create_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1014,10 +1017,6 @@ def test_create_queue( assert response.state == gct_queue.Queue.State.RUNNING -def test_create_queue_from_dict(): - test_create_queue(request_type=dict) - - def test_create_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1135,8 +1134,12 @@ def test_create_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val def test_create_queue_flattened_error(): @@ -1172,8 +1175,12 @@ async def test_create_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -1190,9 +1197,8 @@ async def test_create_queue_flattened_error_async(): ) -def test_update_queue( - transport: str = "grpc", request_type=cloudtasks.UpdateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.UpdateQueueRequest, dict,]) +def test_update_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1220,10 +1226,6 @@ def test_update_queue( assert response.state == gct_queue.Queue.State.RUNNING -def test_update_queue_from_dict(): - test_update_queue(request_type=dict) - - def test_update_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1342,8 +1344,12 @@ def test_update_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val def test_update_queue_flattened_error(): @@ -1380,8 +1386,12 @@ async def test_update_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val @pytest.mark.asyncio @@ -1398,9 +1408,8 @@ async def test_update_queue_flattened_error_async(): ) -def test_delete_queue( - transport: str = "grpc", request_type=cloudtasks.DeleteQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteQueueRequest, dict,]) +def test_delete_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1424,10 +1433,6 @@ def test_delete_queue( assert response is None -def test_delete_queue_from_dict(): - test_delete_queue(request_type=dict) - - def test_delete_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1539,7 +1544,9 @@ def test_delete_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_queue_flattened_error(): @@ -1571,7 +1578,9 @@ async def test_delete_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1586,9 +1595,8 @@ async def test_delete_queue_flattened_error_async(): ) -def test_purge_queue( - transport: str = "grpc", request_type=cloudtasks.PurgeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PurgeQueueRequest, dict,]) +def test_purge_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1616,10 +1624,6 @@ def test_purge_queue( assert response.state == queue.Queue.State.RUNNING -def test_purge_queue_from_dict(): - test_purge_queue(request_type=dict) - - def test_purge_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1735,7 +1739,9 @@ def test_purge_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_purge_queue_flattened_error(): @@ -1767,7 +1773,9 @@ async def test_purge_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1782,9 +1790,8 @@ async def test_purge_queue_flattened_error_async(): ) -def test_pause_queue( - transport: str = "grpc", request_type=cloudtasks.PauseQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PauseQueueRequest, dict,]) +def test_pause_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1812,10 +1819,6 @@ def test_pause_queue( assert response.state == queue.Queue.State.RUNNING -def test_pause_queue_from_dict(): - test_pause_queue(request_type=dict) - - def test_pause_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1931,7 +1934,9 @@ def test_pause_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_pause_queue_flattened_error(): @@ -1963,7 +1968,9 @@ async def test_pause_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1978,9 +1985,8 @@ async def test_pause_queue_flattened_error_async(): ) -def test_resume_queue( - transport: str = "grpc", request_type=cloudtasks.ResumeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ResumeQueueRequest, dict,]) +def test_resume_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2008,10 +2014,6 @@ def test_resume_queue( assert response.state == queue.Queue.State.RUNNING -def test_resume_queue_from_dict(): - test_resume_queue(request_type=dict) - - def test_resume_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2127,7 +2129,9 @@ def test_resume_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_resume_queue_flattened_error(): @@ -2159,7 +2163,9 @@ async def test_resume_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2174,9 +2180,8 @@ async def test_resume_queue_flattened_error_async(): ) -def test_get_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.GetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.GetIamPolicyRequest, dict,]) +def test_get_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2202,10 +2207,6 @@ def test_get_iam_policy( assert response.etag == b"etag_blob" -def test_get_iam_policy_from_dict(): - test_get_iam_policy(request_type=dict) - - def test_get_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2336,7 +2337,9 @@ def test_get_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_get_iam_policy_flattened_error(): @@ -2368,7 +2371,9 @@ async def test_get_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2383,9 +2388,8 @@ async def test_get_iam_policy_flattened_error_async(): ) -def test_set_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.SetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.SetIamPolicyRequest, dict,]) +def test_set_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2411,10 +2415,6 @@ def test_set_iam_policy( assert response.etag == b"etag_blob" -def test_set_iam_policy_from_dict(): - test_set_iam_policy(request_type=dict) - - def test_set_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2545,7 +2545,9 @@ def test_set_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_set_iam_policy_flattened_error(): @@ -2577,7 +2579,9 @@ async def test_set_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2592,9 +2596,10 @@ async def test_set_iam_policy_flattened_error_async(): ) -def test_test_iam_permissions( - transport: str = "grpc", request_type=iam_policy_pb2.TestIamPermissionsRequest -): +@pytest.mark.parametrize( + "request_type", [iam_policy_pb2.TestIamPermissionsRequest, dict,] +) +def test_test_iam_permissions(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2623,10 +2628,6 @@ def test_test_iam_permissions( assert response.permissions == ["permissions_value"] -def test_test_iam_permissions_from_dict(): - test_test_iam_permissions(request_type=dict) - - def test_test_iam_permissions_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2775,8 +2776,12 @@ def test_test_iam_permissions_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val def test_test_iam_permissions_flattened_error(): @@ -2816,8 +2821,12 @@ async def test_test_iam_permissions_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val @pytest.mark.asyncio @@ -2834,7 +2843,8 @@ async def test_test_iam_permissions_flattened_error_async(): ) -def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.ListTasksRequest, dict,]) +def test_list_tasks(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2861,10 +2871,6 @@ def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRe assert response.next_page_token == "next_page_token_value" -def test_list_tasks_from_dict(): - test_list_tasks(request_type=dict) - - def test_list_tasks_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2981,7 +2987,9 @@ def test_list_tasks_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_tasks_flattened_error(): @@ -3015,7 +3023,9 @@ async def test_list_tasks_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3030,8 +3040,10 @@ async def test_list_tasks_flattened_error_async(): ) -def test_list_tasks_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3059,8 +3071,10 @@ def test_list_tasks_pager(): assert all(isinstance(i, task.Task) for i in results) -def test_list_tasks_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3132,7 +3146,8 @@ async def test_list_tasks_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetTaskRequest, dict,]) +def test_get_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3168,10 +3183,6 @@ def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskReques assert response.view == task.Task.View.BASIC -def test_get_task_from_dict(): - test_get_task(request_type=dict) - - def test_get_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3294,7 +3305,9 @@ def test_get_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_task_flattened_error(): @@ -3326,7 +3339,9 @@ async def test_get_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3341,9 +3356,8 @@ async def test_get_task_flattened_error_async(): ) -def test_create_task( - transport: str = "grpc", request_type=cloudtasks.CreateTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateTaskRequest, dict,]) +def test_create_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3379,10 +3393,6 @@ def test_create_task( assert response.view == gct_task.Task.View.BASIC -def test_create_task_from_dict(): - test_create_task(request_type=dict) - - def test_create_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3507,8 +3517,12 @@ def test_create_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val def test_create_task_flattened_error(): @@ -3544,8 +3558,12 @@ async def test_create_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -3562,9 +3580,8 @@ async def test_create_task_flattened_error_async(): ) -def test_delete_task( - transport: str = "grpc", request_type=cloudtasks.DeleteTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteTaskRequest, dict,]) +def test_delete_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3588,10 +3605,6 @@ def test_delete_task( assert response is None -def test_delete_task_from_dict(): - test_delete_task(request_type=dict) - - def test_delete_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3703,7 +3716,9 @@ def test_delete_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_task_flattened_error(): @@ -3735,7 +3750,9 @@ async def test_delete_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3750,7 +3767,8 @@ async def test_delete_task_flattened_error_async(): ) -def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.RunTaskRequest, dict,]) +def test_run_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3786,10 +3804,6 @@ def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskReques assert response.view == task.Task.View.BASIC -def test_run_task_from_dict(): - test_run_task(request_type=dict) - - def test_run_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3912,7 +3926,9 @@ def test_run_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_run_task_flattened_error(): @@ -3944,7 +3960,9 @@ async def test_run_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -4497,7 +4515,7 @@ def test_parse_common_location_path(): assert expected == actual -def test_client_withDEFAULT_CLIENT_INFO(): +def test_client_with_default_client_info(): client_info = gapic_v1.client_info.ClientInfo() with mock.patch.object( diff --git a/tests/unit/gapic/tasks_v2beta2/test_cloud_tasks.py b/tests/unit/gapic/tasks_v2beta2/test_cloud_tasks.py index d3c4871f..7613f45c 100644 --- a/tests/unit/gapic/tasks_v2beta2/test_cloud_tasks.py +++ b/tests/unit/gapic/tasks_v2beta2/test_cloud_tasks.py @@ -251,20 +251,20 @@ def test_cloud_tasks_client_client_options( # unsupported value. with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): with pytest.raises(MutualTLSChannelError): - client = client_class() + client = client_class(transport=transport_name) # Check the case GOOGLE_API_USE_CLIENT_CERTIFICATE has unsupported value. with mock.patch.dict( os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} ): with pytest.raises(ValueError): - client = client_class() + client = client_class(transport=transport_name) # Check the case quota_project_id is provided options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -321,7 +321,7 @@ def test_cloud_tasks_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) if use_client_cert_env == "false": expected_client_cert_source = None @@ -416,7 +416,7 @@ def test_cloud_tasks_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -447,7 +447,7 @@ def test_cloud_tasks_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -478,9 +478,8 @@ def test_cloud_tasks_client_client_options_from_dict(): ) -def test_list_queues( - transport: str = "grpc", request_type=cloudtasks.ListQueuesRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ListQueuesRequest, dict,]) +def test_list_queues(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -507,10 +506,6 @@ def test_list_queues( assert response.next_page_token == "next_page_token_value" -def test_list_queues_from_dict(): - test_list_queues(request_type=dict) - - def test_list_queues_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -627,7 +622,9 @@ def test_list_queues_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_queues_flattened_error(): @@ -661,7 +658,9 @@ async def test_list_queues_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -676,8 +675,10 @@ async def test_list_queues_flattened_error_async(): ) -def test_list_queues_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -708,8 +709,10 @@ def test_list_queues_pager(): assert all(isinstance(i, queue.Queue) for i in results) -def test_list_queues_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -790,7 +793,8 @@ async def test_list_queues_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetQueueRequest, dict,]) +def test_get_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -824,10 +828,6 @@ def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequ assert response.state == queue.Queue.State.RUNNING -def test_get_queue_from_dict(): - test_get_queue(request_type=dict) - - def test_get_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -943,7 +943,9 @@ def test_get_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_queue_flattened_error(): @@ -975,7 +977,9 @@ async def test_get_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -990,9 +994,8 @@ async def test_get_queue_flattened_error_async(): ) -def test_create_queue( - transport: str = "grpc", request_type=cloudtasks.CreateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateQueueRequest, dict,]) +def test_create_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1026,10 +1029,6 @@ def test_create_queue( assert response.state == gct_queue.Queue.State.RUNNING -def test_create_queue_from_dict(): - test_create_queue(request_type=dict) - - def test_create_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1147,8 +1146,12 @@ def test_create_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val def test_create_queue_flattened_error(): @@ -1184,8 +1187,12 @@ async def test_create_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -1202,9 +1209,8 @@ async def test_create_queue_flattened_error_async(): ) -def test_update_queue( - transport: str = "grpc", request_type=cloudtasks.UpdateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.UpdateQueueRequest, dict,]) +def test_update_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1238,10 +1244,6 @@ def test_update_queue( assert response.state == gct_queue.Queue.State.RUNNING -def test_update_queue_from_dict(): - test_update_queue(request_type=dict) - - def test_update_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1360,8 +1362,12 @@ def test_update_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val def test_update_queue_flattened_error(): @@ -1398,8 +1404,12 @@ async def test_update_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val @pytest.mark.asyncio @@ -1416,9 +1426,8 @@ async def test_update_queue_flattened_error_async(): ) -def test_delete_queue( - transport: str = "grpc", request_type=cloudtasks.DeleteQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteQueueRequest, dict,]) +def test_delete_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1442,10 +1451,6 @@ def test_delete_queue( assert response is None -def test_delete_queue_from_dict(): - test_delete_queue(request_type=dict) - - def test_delete_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1557,7 +1562,9 @@ def test_delete_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_queue_flattened_error(): @@ -1589,7 +1596,9 @@ async def test_delete_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1604,9 +1613,8 @@ async def test_delete_queue_flattened_error_async(): ) -def test_purge_queue( - transport: str = "grpc", request_type=cloudtasks.PurgeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PurgeQueueRequest, dict,]) +def test_purge_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1640,10 +1648,6 @@ def test_purge_queue( assert response.state == queue.Queue.State.RUNNING -def test_purge_queue_from_dict(): - test_purge_queue(request_type=dict) - - def test_purge_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1759,7 +1763,9 @@ def test_purge_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_purge_queue_flattened_error(): @@ -1791,7 +1797,9 @@ async def test_purge_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1806,9 +1814,8 @@ async def test_purge_queue_flattened_error_async(): ) -def test_pause_queue( - transport: str = "grpc", request_type=cloudtasks.PauseQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PauseQueueRequest, dict,]) +def test_pause_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1842,10 +1849,6 @@ def test_pause_queue( assert response.state == queue.Queue.State.RUNNING -def test_pause_queue_from_dict(): - test_pause_queue(request_type=dict) - - def test_pause_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1961,7 +1964,9 @@ def test_pause_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_pause_queue_flattened_error(): @@ -1993,7 +1998,9 @@ async def test_pause_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2008,9 +2015,8 @@ async def test_pause_queue_flattened_error_async(): ) -def test_resume_queue( - transport: str = "grpc", request_type=cloudtasks.ResumeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ResumeQueueRequest, dict,]) +def test_resume_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2044,10 +2050,6 @@ def test_resume_queue( assert response.state == queue.Queue.State.RUNNING -def test_resume_queue_from_dict(): - test_resume_queue(request_type=dict) - - def test_resume_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2163,7 +2165,9 @@ def test_resume_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_resume_queue_flattened_error(): @@ -2195,7 +2199,9 @@ async def test_resume_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2210,9 +2216,8 @@ async def test_resume_queue_flattened_error_async(): ) -def test_get_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.GetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.GetIamPolicyRequest, dict,]) +def test_get_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2238,10 +2243,6 @@ def test_get_iam_policy( assert response.etag == b"etag_blob" -def test_get_iam_policy_from_dict(): - test_get_iam_policy(request_type=dict) - - def test_get_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2372,7 +2373,9 @@ def test_get_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_get_iam_policy_flattened_error(): @@ -2404,7 +2407,9 @@ async def test_get_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2419,9 +2424,8 @@ async def test_get_iam_policy_flattened_error_async(): ) -def test_set_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.SetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.SetIamPolicyRequest, dict,]) +def test_set_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2447,10 +2451,6 @@ def test_set_iam_policy( assert response.etag == b"etag_blob" -def test_set_iam_policy_from_dict(): - test_set_iam_policy(request_type=dict) - - def test_set_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2581,7 +2581,9 @@ def test_set_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_set_iam_policy_flattened_error(): @@ -2613,7 +2615,9 @@ async def test_set_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2628,9 +2632,10 @@ async def test_set_iam_policy_flattened_error_async(): ) -def test_test_iam_permissions( - transport: str = "grpc", request_type=iam_policy_pb2.TestIamPermissionsRequest -): +@pytest.mark.parametrize( + "request_type", [iam_policy_pb2.TestIamPermissionsRequest, dict,] +) +def test_test_iam_permissions(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2659,10 +2664,6 @@ def test_test_iam_permissions( assert response.permissions == ["permissions_value"] -def test_test_iam_permissions_from_dict(): - test_test_iam_permissions(request_type=dict) - - def test_test_iam_permissions_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2811,8 +2812,12 @@ def test_test_iam_permissions_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val def test_test_iam_permissions_flattened_error(): @@ -2852,8 +2857,12 @@ async def test_test_iam_permissions_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val @pytest.mark.asyncio @@ -2870,7 +2879,8 @@ async def test_test_iam_permissions_flattened_error_async(): ) -def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.ListTasksRequest, dict,]) +def test_list_tasks(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2897,10 +2907,6 @@ def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRe assert response.next_page_token == "next_page_token_value" -def test_list_tasks_from_dict(): - test_list_tasks(request_type=dict) - - def test_list_tasks_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3017,7 +3023,9 @@ def test_list_tasks_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_tasks_flattened_error(): @@ -3051,7 +3059,9 @@ async def test_list_tasks_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3066,8 +3076,10 @@ async def test_list_tasks_flattened_error_async(): ) -def test_list_tasks_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3095,8 +3107,10 @@ def test_list_tasks_pager(): assert all(isinstance(i, task.Task) for i in results) -def test_list_tasks_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3168,7 +3182,8 @@ async def test_list_tasks_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetTaskRequest, dict,]) +def test_get_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3200,10 +3215,6 @@ def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskReques assert response.view == task.Task.View.BASIC -def test_get_task_from_dict(): - test_get_task(request_type=dict) - - def test_get_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3319,7 +3330,9 @@ def test_get_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_task_flattened_error(): @@ -3351,7 +3364,9 @@ async def test_get_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3366,9 +3381,8 @@ async def test_get_task_flattened_error_async(): ) -def test_create_task( - transport: str = "grpc", request_type=cloudtasks.CreateTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateTaskRequest, dict,]) +def test_create_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3400,10 +3414,6 @@ def test_create_task( assert response.view == gct_task.Task.View.BASIC -def test_create_task_from_dict(): - test_create_task(request_type=dict) - - def test_create_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3521,8 +3531,12 @@ def test_create_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val def test_create_task_flattened_error(): @@ -3558,8 +3572,12 @@ async def test_create_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -3576,9 +3594,8 @@ async def test_create_task_flattened_error_async(): ) -def test_delete_task( - transport: str = "grpc", request_type=cloudtasks.DeleteTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteTaskRequest, dict,]) +def test_delete_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3602,10 +3619,6 @@ def test_delete_task( assert response is None -def test_delete_task_from_dict(): - test_delete_task(request_type=dict) - - def test_delete_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3717,7 +3730,9 @@ def test_delete_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_task_flattened_error(): @@ -3749,7 +3764,9 @@ async def test_delete_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3764,9 +3781,8 @@ async def test_delete_task_flattened_error_async(): ) -def test_lease_tasks( - transport: str = "grpc", request_type=cloudtasks.LeaseTasksRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.LeaseTasksRequest, dict,]) +def test_lease_tasks(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3790,10 +3806,6 @@ def test_lease_tasks( assert isinstance(response, cloudtasks.LeaseTasksResponse) -def test_lease_tasks_from_dict(): - test_lease_tasks(request_type=dict) - - def test_lease_tasks_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3911,7 +3923,9 @@ def test_lease_tasks_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val assert DurationRule().to_proto(args[0].lease_duration) == duration_pb2.Duration( seconds=751 ) @@ -3952,7 +3966,9 @@ async def test_lease_tasks_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val assert DurationRule().to_proto(args[0].lease_duration) == duration_pb2.Duration( seconds=751 ) @@ -3972,9 +3988,8 @@ async def test_lease_tasks_flattened_error_async(): ) -def test_acknowledge_task( - transport: str = "grpc", request_type=cloudtasks.AcknowledgeTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.AcknowledgeTaskRequest, dict,]) +def test_acknowledge_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3998,10 +4013,6 @@ def test_acknowledge_task( assert response is None -def test_acknowledge_task_from_dict(): - test_acknowledge_task(request_type=dict) - - def test_acknowledge_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -4115,7 +4126,9 @@ def test_acknowledge_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4154,7 +4167,9 @@ async def test_acknowledge_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4174,9 +4189,8 @@ async def test_acknowledge_task_flattened_error_async(): ) -def test_renew_lease( - transport: str = "grpc", request_type=cloudtasks.RenewLeaseRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.RenewLeaseRequest, dict,]) +def test_renew_lease(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -4208,10 +4222,6 @@ def test_renew_lease( assert response.view == task.Task.View.BASIC -def test_renew_lease_from_dict(): - test_renew_lease(request_type=dict) - - def test_renew_lease_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -4331,7 +4341,9 @@ def test_renew_lease_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4376,7 +4388,9 @@ async def test_renew_lease_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4400,9 +4414,8 @@ async def test_renew_lease_flattened_error_async(): ) -def test_cancel_lease( - transport: str = "grpc", request_type=cloudtasks.CancelLeaseRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CancelLeaseRequest, dict,]) +def test_cancel_lease(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -4434,10 +4447,6 @@ def test_cancel_lease( assert response.view == task.Task.View.BASIC -def test_cancel_lease_from_dict(): - test_cancel_lease(request_type=dict) - - def test_cancel_lease_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -4555,7 +4564,9 @@ def test_cancel_lease_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4594,7 +4605,9 @@ async def test_cancel_lease_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val assert TimestampRule().to_proto( args[0].schedule_time ) == timestamp_pb2.Timestamp(seconds=751) @@ -4614,7 +4627,8 @@ async def test_cancel_lease_flattened_error_async(): ) -def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.RunTaskRequest, dict,]) +def test_run_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -4646,10 +4660,6 @@ def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskReques assert response.view == task.Task.View.BASIC -def test_run_task_from_dict(): - test_run_task(request_type=dict) - - def test_run_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -4765,7 +4775,9 @@ def test_run_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_run_task_flattened_error(): @@ -4797,7 +4809,9 @@ async def test_run_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -5354,7 +5368,7 @@ def test_parse_common_location_path(): assert expected == actual -def test_client_withDEFAULT_CLIENT_INFO(): +def test_client_with_default_client_info(): client_info = gapic_v1.client_info.ClientInfo() with mock.patch.object( diff --git a/tests/unit/gapic/tasks_v2beta3/test_cloud_tasks.py b/tests/unit/gapic/tasks_v2beta3/test_cloud_tasks.py index b011faf9..858eca12 100644 --- a/tests/unit/gapic/tasks_v2beta3/test_cloud_tasks.py +++ b/tests/unit/gapic/tasks_v2beta3/test_cloud_tasks.py @@ -251,20 +251,20 @@ def test_cloud_tasks_client_client_options( # unsupported value. with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}): with pytest.raises(MutualTLSChannelError): - client = client_class() + client = client_class(transport=transport_name) # Check the case GOOGLE_API_USE_CLIENT_CERTIFICATE has unsupported value. with mock.patch.dict( os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": "Unsupported"} ): with pytest.raises(ValueError): - client = client_class() + client = client_class(transport=transport_name) # Check the case quota_project_id is provided options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -321,7 +321,7 @@ def test_cloud_tasks_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) if use_client_cert_env == "false": expected_client_cert_source = None @@ -416,7 +416,7 @@ def test_cloud_tasks_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -447,7 +447,7 @@ def test_cloud_tasks_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(transport=transport_name, client_options=options) + client = client_class(client_options=options, transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -478,9 +478,8 @@ def test_cloud_tasks_client_client_options_from_dict(): ) -def test_list_queues( - transport: str = "grpc", request_type=cloudtasks.ListQueuesRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ListQueuesRequest, dict,]) +def test_list_queues(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -507,10 +506,6 @@ def test_list_queues( assert response.next_page_token == "next_page_token_value" -def test_list_queues_from_dict(): - test_list_queues(request_type=dict) - - def test_list_queues_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -627,7 +622,9 @@ def test_list_queues_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_queues_flattened_error(): @@ -661,7 +658,9 @@ async def test_list_queues_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -676,8 +675,10 @@ async def test_list_queues_flattened_error_async(): ) -def test_list_queues_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -708,8 +709,10 @@ def test_list_queues_pager(): assert all(isinstance(i, queue.Queue) for i in results) -def test_list_queues_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_queues_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_queues), "__call__") as call: @@ -790,7 +793,8 @@ async def test_list_queues_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetQueueRequest, dict,]) +def test_get_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -826,10 +830,6 @@ def test_get_queue(transport: str = "grpc", request_type=cloudtasks.GetQueueRequ assert response.type_ == queue.Queue.Type.PULL -def test_get_queue_from_dict(): - test_get_queue(request_type=dict) - - def test_get_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -950,7 +950,9 @@ def test_get_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_queue_flattened_error(): @@ -982,7 +984,9 @@ async def test_get_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -997,9 +1001,8 @@ async def test_get_queue_flattened_error_async(): ) -def test_create_queue( - transport: str = "grpc", request_type=cloudtasks.CreateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateQueueRequest, dict,]) +def test_create_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1035,10 +1038,6 @@ def test_create_queue( assert response.type_ == gct_queue.Queue.Type.PULL -def test_create_queue_from_dict(): - test_create_queue(request_type=dict) - - def test_create_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1161,8 +1160,12 @@ def test_create_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val def test_create_queue_flattened_error(): @@ -1198,8 +1201,12 @@ async def test_create_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].queue == gct_queue.Queue(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -1216,9 +1223,8 @@ async def test_create_queue_flattened_error_async(): ) -def test_update_queue( - transport: str = "grpc", request_type=cloudtasks.UpdateQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.UpdateQueueRequest, dict,]) +def test_update_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1254,10 +1260,6 @@ def test_update_queue( assert response.type_ == gct_queue.Queue.Type.PULL -def test_update_queue_from_dict(): - test_update_queue(request_type=dict) - - def test_update_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1381,8 +1383,12 @@ def test_update_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val def test_update_queue_flattened_error(): @@ -1419,8 +1425,12 @@ async def test_update_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].queue == gct_queue.Queue(name="name_value") - assert args[0].update_mask == field_mask_pb2.FieldMask(paths=["paths_value"]) + arg = args[0].queue + mock_val = gct_queue.Queue(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val @pytest.mark.asyncio @@ -1437,9 +1447,8 @@ async def test_update_queue_flattened_error_async(): ) -def test_delete_queue( - transport: str = "grpc", request_type=cloudtasks.DeleteQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteQueueRequest, dict,]) +def test_delete_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1463,10 +1472,6 @@ def test_delete_queue( assert response is None -def test_delete_queue_from_dict(): - test_delete_queue(request_type=dict) - - def test_delete_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1578,7 +1583,9 @@ def test_delete_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_queue_flattened_error(): @@ -1610,7 +1617,9 @@ async def test_delete_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1625,9 +1634,8 @@ async def test_delete_queue_flattened_error_async(): ) -def test_purge_queue( - transport: str = "grpc", request_type=cloudtasks.PurgeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PurgeQueueRequest, dict,]) +def test_purge_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1663,10 +1671,6 @@ def test_purge_queue( assert response.type_ == queue.Queue.Type.PULL -def test_purge_queue_from_dict(): - test_purge_queue(request_type=dict) - - def test_purge_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1787,7 +1791,9 @@ def test_purge_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_purge_queue_flattened_error(): @@ -1819,7 +1825,9 @@ async def test_purge_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -1834,9 +1842,8 @@ async def test_purge_queue_flattened_error_async(): ) -def test_pause_queue( - transport: str = "grpc", request_type=cloudtasks.PauseQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.PauseQueueRequest, dict,]) +def test_pause_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -1872,10 +1879,6 @@ def test_pause_queue( assert response.type_ == queue.Queue.Type.PULL -def test_pause_queue_from_dict(): - test_pause_queue(request_type=dict) - - def test_pause_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -1996,7 +1999,9 @@ def test_pause_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_pause_queue_flattened_error(): @@ -2028,7 +2033,9 @@ async def test_pause_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2043,9 +2050,8 @@ async def test_pause_queue_flattened_error_async(): ) -def test_resume_queue( - transport: str = "grpc", request_type=cloudtasks.ResumeQueueRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.ResumeQueueRequest, dict,]) +def test_resume_queue(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2081,10 +2087,6 @@ def test_resume_queue( assert response.type_ == queue.Queue.Type.PULL -def test_resume_queue_from_dict(): - test_resume_queue(request_type=dict) - - def test_resume_queue_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2205,7 +2207,9 @@ def test_resume_queue_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_resume_queue_flattened_error(): @@ -2237,7 +2241,9 @@ async def test_resume_queue_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2252,9 +2258,8 @@ async def test_resume_queue_flattened_error_async(): ) -def test_get_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.GetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.GetIamPolicyRequest, dict,]) +def test_get_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2280,10 +2285,6 @@ def test_get_iam_policy( assert response.etag == b"etag_blob" -def test_get_iam_policy_from_dict(): - test_get_iam_policy(request_type=dict) - - def test_get_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2414,7 +2415,9 @@ def test_get_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_get_iam_policy_flattened_error(): @@ -2446,7 +2449,9 @@ async def test_get_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2461,9 +2466,8 @@ async def test_get_iam_policy_flattened_error_async(): ) -def test_set_iam_policy( - transport: str = "grpc", request_type=iam_policy_pb2.SetIamPolicyRequest -): +@pytest.mark.parametrize("request_type", [iam_policy_pb2.SetIamPolicyRequest, dict,]) +def test_set_iam_policy(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2489,10 +2493,6 @@ def test_set_iam_policy( assert response.etag == b"etag_blob" -def test_set_iam_policy_from_dict(): - test_set_iam_policy(request_type=dict) - - def test_set_iam_policy_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2623,7 +2623,9 @@ def test_set_iam_policy_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val def test_set_iam_policy_flattened_error(): @@ -2655,7 +2657,9 @@ async def test_set_iam_policy_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val @pytest.mark.asyncio @@ -2670,9 +2674,10 @@ async def test_set_iam_policy_flattened_error_async(): ) -def test_test_iam_permissions( - transport: str = "grpc", request_type=iam_policy_pb2.TestIamPermissionsRequest -): +@pytest.mark.parametrize( + "request_type", [iam_policy_pb2.TestIamPermissionsRequest, dict,] +) +def test_test_iam_permissions(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2701,10 +2706,6 @@ def test_test_iam_permissions( assert response.permissions == ["permissions_value"] -def test_test_iam_permissions_from_dict(): - test_test_iam_permissions(request_type=dict) - - def test_test_iam_permissions_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -2853,8 +2854,12 @@ def test_test_iam_permissions_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val def test_test_iam_permissions_flattened_error(): @@ -2894,8 +2899,12 @@ async def test_test_iam_permissions_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].resource == "resource_value" - assert args[0].permissions == ["permissions_value"] + arg = args[0].resource + mock_val = "resource_value" + assert arg == mock_val + arg = args[0].permissions + mock_val = ["permissions_value"] + assert arg == mock_val @pytest.mark.asyncio @@ -2912,7 +2921,8 @@ async def test_test_iam_permissions_flattened_error_async(): ) -def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.ListTasksRequest, dict,]) +def test_list_tasks(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -2939,10 +2949,6 @@ def test_list_tasks(transport: str = "grpc", request_type=cloudtasks.ListTasksRe assert response.next_page_token == "next_page_token_value" -def test_list_tasks_from_dict(): - test_list_tasks(request_type=dict) - - def test_list_tasks_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3059,7 +3065,9 @@ def test_list_tasks_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val def test_list_tasks_flattened_error(): @@ -3093,7 +3101,9 @@ async def test_list_tasks_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3108,8 +3118,10 @@ async def test_list_tasks_flattened_error_async(): ) -def test_list_tasks_pager(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pager(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3137,8 +3149,10 @@ def test_list_tasks_pager(): assert all(isinstance(i, task.Task) for i in results) -def test_list_tasks_pages(): - client = CloudTasksClient(credentials=ga_credentials.AnonymousCredentials,) +def test_list_tasks_pages(transport_name: str = "grpc"): + client = CloudTasksClient( + credentials=ga_credentials.AnonymousCredentials, transport=transport_name, + ) # Mock the actual call within the gRPC stub, and fake the request. with mock.patch.object(type(client.transport.list_tasks), "__call__") as call: @@ -3210,7 +3224,8 @@ async def test_list_tasks_async_pages(): assert page_.raw_page.next_page_token == token -def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.GetTaskRequest, dict,]) +def test_get_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3246,10 +3261,6 @@ def test_get_task(transport: str = "grpc", request_type=cloudtasks.GetTaskReques assert response.view == task.Task.View.BASIC -def test_get_task_from_dict(): - test_get_task(request_type=dict) - - def test_get_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3372,7 +3383,9 @@ def test_get_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_get_task_flattened_error(): @@ -3404,7 +3417,9 @@ async def test_get_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3419,9 +3434,8 @@ async def test_get_task_flattened_error_async(): ) -def test_create_task( - transport: str = "grpc", request_type=cloudtasks.CreateTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.CreateTaskRequest, dict,]) +def test_create_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3457,10 +3471,6 @@ def test_create_task( assert response.view == gct_task.Task.View.BASIC -def test_create_task_from_dict(): - test_create_task(request_type=dict) - - def test_create_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3585,8 +3595,12 @@ def test_create_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val def test_create_task_flattened_error(): @@ -3622,8 +3636,12 @@ async def test_create_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].parent == "parent_value" - assert args[0].task == gct_task.Task(name="name_value") + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].task + mock_val = gct_task.Task(name="name_value") + assert arg == mock_val @pytest.mark.asyncio @@ -3640,9 +3658,8 @@ async def test_create_task_flattened_error_async(): ) -def test_delete_task( - transport: str = "grpc", request_type=cloudtasks.DeleteTaskRequest -): +@pytest.mark.parametrize("request_type", [cloudtasks.DeleteTaskRequest, dict,]) +def test_delete_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3666,10 +3683,6 @@ def test_delete_task( assert response is None -def test_delete_task_from_dict(): - test_delete_task(request_type=dict) - - def test_delete_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3781,7 +3794,9 @@ def test_delete_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_delete_task_flattened_error(): @@ -3813,7 +3828,9 @@ async def test_delete_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -3828,7 +3845,8 @@ async def test_delete_task_flattened_error_async(): ) -def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskRequest): +@pytest.mark.parametrize("request_type", [cloudtasks.RunTaskRequest, dict,]) +def test_run_task(request_type, transport: str = "grpc"): client = CloudTasksClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, ) @@ -3864,10 +3882,6 @@ def test_run_task(transport: str = "grpc", request_type=cloudtasks.RunTaskReques assert response.view == task.Task.View.BASIC -def test_run_task_from_dict(): - test_run_task(request_type=dict) - - def test_run_task_empty_call(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @@ -3990,7 +4004,9 @@ def test_run_task_flattened(): # request object values. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val def test_run_task_flattened_error(): @@ -4022,7 +4038,9 @@ async def test_run_task_flattened_async(): # request object values. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - assert args[0].name == "name_value" + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val @pytest.mark.asyncio @@ -4575,7 +4593,7 @@ def test_parse_common_location_path(): assert expected == actual -def test_client_withDEFAULT_CLIENT_INFO(): +def test_client_with_default_client_info(): client_info = gapic_v1.client_info.ClientInfo() with mock.patch.object(