text: # -*- coding: utf-8 -*-
  # Copyright 2020 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.
  #
  import os
  import mock
  import packaging.version
  
  import grpc
  from grpc.experimental import aio
  import math
  import pytest
  from proto.marshal.rules.dates import DurationRule, TimestampRule
  
  
  from google.api_core import client_options
  from google.api_core import exceptions as core_exceptions
  from google.api_core import future
  from google.api_core import gapic_v1
  from google.api_core import grpc_helpers
  from google.api_core import grpc_helpers_async
  from google.api_core import operation_async  # type: ignore
  from google.api_core import operations_v1
  from google.api_core import path_template
  from google.auth import credentials as ga_credentials
  from google.auth.exceptions import MutualTLSChannelError
  from google.cloud.translate_v3beta1.services.translation_service import (
      TranslationServiceAsyncClient,
  )
  from google.cloud.translate_v3beta1.services.translation_service import (
      TranslationServiceClient,
  )
  from google.cloud.translate_v3beta1.services.translation_service import pagers
  from google.cloud.translate_v3beta1.services.translation_service import transports
  from google.cloud.translate_v3beta1.services.translation_service.transports.base import (
      _GOOGLE_AUTH_VERSION,
  )
  from google.cloud.translate_v3beta1.types import translation_service
  from google.longrunning import operations_pb2
  from google.oauth2 import service_account
  from google.protobuf import timestamp_pb2  # type: ignore
  import google.auth
  
  
  # TODO(busunkim): Once google-auth >= 1.25.0 is required transitively
  # through google-api-core:
  # - Delete the auth "less than" test cases
  # - Delete these pytest markers (Make the "greater than or equal to" tests the default).
  requires_google_auth_lt_1_25_0 = pytest.mark.skipif(
      packaging.version.parse(_GOOGLE_AUTH_VERSION) >= packaging.version.parse("1.25.0"),
      reason="This test requires google-auth < 1.25.0",
  )
  requires_google_auth_gte_1_25_0 = pytest.mark.skipif(
      packaging.version.parse(_GOOGLE_AUTH_VERSION) < packaging.version.parse("1.25.0"),
      reason="This test requires google-auth >= 1.25.0",
  )
  
  
  def client_cert_source_callback():
      return b"cert bytes", b"key bytes"
  
  
  # If default endpoint is localhost, then default mtls endpoint will be the same.
  # This method modifies the default endpoint so the client can produce a different
  # mtls endpoint for endpoint testing purposes.
  def modify_default_endpoint(client):
      return (
          "foo.googleapis.com"
          if ("localhost" in client.DEFAULT_ENDPOINT)
          else client.DEFAULT_ENDPOINT
      )
  
  
  def test__get_default_mtls_endpoint():
      api_endpoint = "example.googleapis.com"
      api_mtls_endpoint = "example.mtls.googleapis.com"
      sandbox_endpoint = "example.sandbox.googleapis.com"
      sandbox_mtls_endpoint = "example.mtls.sandbox.googleapis.com"
      non_googleapi = "api.example.com"
  
      assert TranslationServiceClient._get_default_mtls_endpoint(None) is None
      assert (
          TranslationServiceClient._get_default_mtls_endpoint(api_endpoint)
          == api_mtls_endpoint
      )
      assert (
          TranslationServiceClient._get_default_mtls_endpoint(api_mtls_endpoint)
          == api_mtls_endpoint
      )
      assert (
          TranslationServiceClient._get_default_mtls_endpoint(sandbox_endpoint)
          == sandbox_mtls_endpoint
      )
      assert (
          TranslationServiceClient._get_default_mtls_endpoint(sandbox_mtls_endpoint)
          == sandbox_mtls_endpoint
      )
      assert (
          TranslationServiceClient._get_default_mtls_endpoint(non_googleapi)
          == non_googleapi
      )
  
  
  @pytest.mark.parametrize(
      "client_class", [TranslationServiceClient, TranslationServiceAsyncClient,]
  )
  def test_translation_service_client_from_service_account_info(client_class):
      creds = ga_credentials.AnonymousCredentials()
      with mock.patch.object(
          service_account.Credentials, "from_service_account_info"
      ) as factory:
          factory.return_value = creds
          info = {"valid": True}
          client = client_class.from_service_account_info(info)
          assert client.transport._credentials == creds
          assert isinstance(client, client_class)
  
          assert client.transport._host == "translate.googleapis.com:443"
  
  
  @pytest.mark.parametrize(
      "transport_class,transport_name",
      [
          (transports.TranslationServiceGrpcTransport, "grpc"),
          (transports.TranslationServiceGrpcAsyncIOTransport, "grpc_asyncio"),
      ],
  )
  def test_translation_service_client_service_account_always_use_jwt(
      transport_class, transport_name
  ):
      with mock.patch.object(
          service_account.Credentials, "with_always_use_jwt_access", create=True
      ) as use_jwt:
          creds = service_account.Credentials(None, None, None)
          transport = transport_class(credentials=creds, always_use_jwt_access=True)
          use_jwt.assert_called_once_with(True)
  
      with mock.patch.object(
          service_account.Credentials, "with_always_use_jwt_access", create=True
      ) as use_jwt:
          creds = service_account.Credentials(None, None, None)
          transport = transport_class(credentials=creds, always_use_jwt_access=False)
          use_jwt.assert_not_called()
  
  
  @pytest.mark.parametrize(
      "client_class", [TranslationServiceClient, TranslationServiceAsyncClient,]
  )
  def test_translation_service_client_from_service_account_file(client_class):
      creds = ga_credentials.AnonymousCredentials()
      with mock.patch.object(
          service_account.Credentials, "from_service_account_file"
      ) as factory:
          factory.return_value = creds
          client = client_class.from_service_account_file("dummy/file/path.json")
          assert client.transport._credentials == creds
          assert isinstance(client, client_class)
  
          client = client_class.from_service_account_json("dummy/file/path.json")
          assert client.transport._credentials == creds
          assert isinstance(client, client_class)
  
          assert client.transport._host == "translate.googleapis.com:443"
  
  
  def test_translation_service_client_get_transport_class():
      transport = TranslationServiceClient.get_transport_class()
      available_transports = [
          transports.TranslationServiceGrpcTransport,
      ]
      assert transport in available_transports
  
      transport = TranslationServiceClient.get_transport_class("grpc")
      assert transport == transports.TranslationServiceGrpcTransport
  
  
  @pytest.mark.parametrize(
      "client_class,transport_class,transport_name",
      [
          (TranslationServiceClient, transports.TranslationServiceGrpcTransport, "grpc"),
          (
              TranslationServiceAsyncClient,
              transports.TranslationServiceGrpcAsyncIOTransport,
              "grpc_asyncio",
          ),
      ],
  )
  @mock.patch.object(
      TranslationServiceClient,
      "DEFAULT_ENDPOINT",
      modify_default_endpoint(TranslationServiceClient),
  )
  @mock.patch.object(
      TranslationServiceAsyncClient,
      "DEFAULT_ENDPOINT",
      modify_default_endpoint(TranslationServiceAsyncClient),
  )
  def test_translation_service_client_client_options(
      client_class, transport_class, transport_name
  ):
      # Check that if channel is provided we won't create a new one.
      with mock.patch.object(TranslationServiceClient, "get_transport_class") as gtc:
          transport = transport_class(credentials=ga_credentials.AnonymousCredentials())
          client = client_class(transport=transport)
          gtc.assert_not_called()
  
      # Check that if channel is provided via str we will create a new one.
      with mock.patch.object(TranslationServiceClient, "get_transport_class") as gtc:
          client = client_class(transport=transport_name)
          gtc.assert_called()
  
      # Check the case api_endpoint is provided.
      options = client_options.ClientOptions(api_endpoint="squid.clam.whelk")
      with mock.patch.object(transport_class, "__init__") as patched:
          patched.return_value = None
          client = client_class(client_options=options)
          patched.assert_called_once_with(
              credentials=None,
              credentials_file=None,
              host="squid.clam.whelk",
              scopes=None,
              client_cert_source_for_mtls=None,
              quota_project_id=None,
              client_info=transports.base.DEFAULT_CLIENT_INFO,
              always_use_jwt_access=True,
          )
  
      # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
      # "never".
      with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}):
          with mock.patch.object(transport_class, "__init__") as patched:
              patched.return_value = None
              client = client_class()
              patched.assert_called_once_with(
                  credentials=None,
                  credentials_file=None,
                  host=client.DEFAULT_ENDPOINT,
                  scopes=None,
                  client_cert_source_for_mtls=None,
                  quota_project_id=None,
                  client_info=transports.base.DEFAULT_CLIENT_INFO,
                  always_use_jwt_access=True,
              )
  
      # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT is
      # "always".
      with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}):
          with mock.patch.object(transport_class, "__init__") as patched:
              patched.return_value = None
              client = client_class()
              patched.assert_called_once_with(
                  credentials=None,
                  credentials_file=None,
                  host=client.DEFAULT_MTLS_ENDPOINT,
                  scopes=None,
                  client_cert_source_for_mtls=None,
                  quota_project_id=None,
                  client_info=transports.base.DEFAULT_CLIENT_INFO,
                  always_use_jwt_access=True,
              )
  
      # Check the case api_endpoint is not provided and GOOGLE_API_USE_MTLS_ENDPOINT has
      # unsupported value.
      with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "Unsupported"}):
          with pytest.raises(MutualTLSChannelError):
              client = client_class()
  
      # 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()
  
      # 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(client_options=options)
          patched.assert_called_once_with(
              credentials=None,
              credentials_file=None,
              host=client.DEFAULT_ENDPOINT,
              scopes=None,
              client_cert_source_for_mtls=None,
              quota_project_id="octopus",
              client_info=transports.base.DEFAULT_CLIENT_INFO,
              always_use_jwt_access=True,
          )
  
  
  @pytest.mark.parametrize(
      "client_class,transport_class,transport_name,use_client_cert_env",
      [
          (
              TranslationServiceClient,
              transports.TranslationServiceGrpcTransport,
              "grpc",
              "true",
          ),
          (
              TranslationServiceAsyncClient,
              transports.TranslationServiceGrpcAsyncIOTransport,
              "grpc_asyncio",
              "true",
          ),
          (
              TranslationServiceClient,
              transports.TranslationServiceGrpcTransport,
              "grpc",
              "false",
          ),
          (
              TranslationServiceAsyncClient,
              transports.TranslationServiceGrpcAsyncIOTransport,
              "grpc_asyncio",
              "false",
          ),
      ],
  )
  @mock.patch.object(
      TranslationServiceClient,
      "DEFAULT_ENDPOINT",
      modify_default_endpoint(TranslationServiceClient),
  )
  @mock.patch.object(
      TranslationServiceAsyncClient,
      "DEFAULT_ENDPOINT",
      modify_default_endpoint(TranslationServiceAsyncClient),
  )
  @mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"})
  def test_translation_service_client_mtls_env_auto(
      client_class, transport_class, transport_name, use_client_cert_env
  ):
      # This tests the endpoint autoswitch behavior. Endpoint is autoswitched to the default
      # mtls endpoint, if GOOGLE_API_USE_CLIENT_CERTIFICATE is "true" and client cert exists.
  
      # Check the case client_cert_source is provided. Whether client cert is used depends on
      # GOOGLE_API_USE_CLIENT_CERTIFICATE value.
      with mock.patch.dict(
          os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env}
      ):
          options = client_options.ClientOptions(
              client_cert_source=client_cert_source_callback
          )
          with mock.patch.object(transport_class, "__init__") as patched:
              patched.return_value = None
              client = client_class(client_options=options)
  
              if use_client_cert_env == "false":
                  expected_client_cert_source = None
                  expected_host = client.DEFAULT_ENDPOINT
              else:
                  expected_client_cert_source = client_cert_source_callback
                  expected_host = client.DEFAULT_MTLS_ENDPOINT
  
              patched.assert_called_once_with(
                  credentials=None,
                  credentials_file=None,
                  host=expected_host,
                  scopes=None,
                  client_cert_source_for_mtls=expected_client_cert_source,
                  quota_project_id=None,
                  client_info=transports.base.DEFAULT_CLIENT_INFO,
                  always_use_jwt_access=True,
              )
  
      # Check the case ADC client cert is provided. Whether client cert is used depends on
      # GOOGLE_API_USE_CLIENT_CERTIFICATE value.
      with mock.patch.dict(
          os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env}
      ):
          with mock.patch.object(transport_class, "__init__") as patched:
              with mock.patch(
                  "google.auth.transport.mtls.has_default_client_cert_source",
                  return_value=True,
              ):
                  with mock.patch(
                      "google.auth.transport.mtls.default_client_cert_source",
                      return_value=client_cert_source_callback,
                  ):
                      if use_client_cert_env == "false":
                          expected_host = client.DEFAULT_ENDPOINT
                          expected_client_cert_source = None
                      else:
                          expected_host = client.DEFAULT_MTLS_ENDPOINT
                          expected_client_cert_source = client_cert_source_callback
  
                      patched.return_value = None
                      client = client_class()
                      patched.assert_called_once_with(
                          credentials=None,
                          credentials_file=None,
                          host=expected_host,
                          scopes=None,
                          client_cert_source_for_mtls=expected_client_cert_source,
                          quota_project_id=None,
                          client_info=transports.base.DEFAULT_CLIENT_INFO,
                          always_use_jwt_access=True,
                      )
  
      # Check the case client_cert_source and ADC client cert are not provided.
      with mock.patch.dict(
          os.environ, {"GOOGLE_API_USE_CLIENT_CERTIFICATE": use_client_cert_env}
      ):
          with mock.patch.object(transport_class, "__init__") as patched:
              with mock.patch(
                  "google.auth.transport.mtls.has_default_client_cert_source",
                  return_value=False,
              ):
                  patched.return_value = None
                  client = client_class()
                  patched.assert_called_once_with(
                      credentials=None,
                      credentials_file=None,
                      host=client.DEFAULT_ENDPOINT,
                      scopes=None,
                      client_cert_source_for_mtls=None,
                      quota_project_id=None,
                      client_info=transports.base.DEFAULT_CLIENT_INFO,
                      always_use_jwt_access=True,
                  )
  
  
  @pytest.mark.parametrize(
      "client_class,transport_class,transport_name",
      [
          (TranslationServiceClient, transports.TranslationServiceGrpcTransport, "grpc"),
          (
              TranslationServiceAsyncClient,
              transports.TranslationServiceGrpcAsyncIOTransport,
              "grpc_asyncio",
          ),
      ],
  )
  def test_translation_service_client_client_options_scopes(
      client_class, transport_class, transport_name
  ):
      # Check the case scopes are provided.
      options = client_options.ClientOptions(scopes=["1", "2"],)
      with mock.patch.object(transport_class, "__init__") as patched:
          patched.return_value = None
          client = client_class(client_options=options)
          patched.assert_called_once_with(
              credentials=None,
              credentials_file=None,
              host=client.DEFAULT_ENDPOINT,
              scopes=["1", "2"],
              client_cert_source_for_mtls=None,
              quota_project_id=None,
              client_info=transports.base.DEFAULT_CLIENT_INFO,
              always_use_jwt_access=True,
          )
  
  
  @pytest.mark.parametrize(
      "client_class,transport_class,transport_name",
      [
          (TranslationServiceClient, transports.TranslationServiceGrpcTransport, "grpc"),
          (
              TranslationServiceAsyncClient,
              transports.TranslationServiceGrpcAsyncIOTransport,
              "grpc_asyncio",
          ),
      ],
  )
  def test_translation_service_client_client_options_credentials_file(
      client_class, transport_class, transport_name
  ):
      # Check the case credentials file is provided.
      options = client_options.ClientOptions(credentials_file="credentials.json")
      with mock.patch.object(transport_class, "__init__") as patched:
          patched.return_value = None
          client = client_class(client_options=options)
          patched.assert_called_once_with(
              credentials=None,
              credentials_file="credentials.json",
              host=client.DEFAULT_ENDPOINT,
              scopes=None,
              client_cert_source_for_mtls=None,
              quota_project_id=None,
              client_info=transports.base.DEFAULT_CLIENT_INFO,
              always_use_jwt_access=True,
          )
  
  
  def test_translation_service_client_client_options_from_dict():
      with mock.patch(
          "google.cloud.translate_v3beta1.services.translation_service.transports.TranslationServiceGrpcTransport.__init__"
      ) as grpc_transport:
          grpc_transport.return_value = None
          client = TranslationServiceClient(
              client_options={"api_endpoint": "squid.clam.whelk"}
          )
          grpc_transport.assert_called_once_with(
              credentials=None,
              credentials_file=None,
              host="squid.clam.whelk",
              scopes=None,
              client_cert_source_for_mtls=None,
              quota_project_id=None,
              client_info=transports.base.DEFAULT_CLIENT_INFO,
              always_use_jwt_access=True,
          )
  
  
  def test_translate_text(
      transport: str = "grpc", request_type=translation_service.TranslateTextRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.translate_text), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.TranslateTextResponse()
          response = client.translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateTextRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.TranslateTextResponse)
  
  
  def test_translate_text_from_dict():
      test_translate_text(request_type=dict)
  
  
  def test_translate_text_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.translate_text), "__call__") as call:
          client.translate_text()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateTextRequest()
  
  
  @pytest.mark.asyncio
  async def test_translate_text_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.TranslateTextRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.translate_text), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.TranslateTextResponse()
          )
          response = await client.translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateTextRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.TranslateTextResponse)
  
  
  @pytest.mark.asyncio
  async def test_translate_text_async_from_dict():
      await test_translate_text_async(request_type=dict)
  
  
  def test_translate_text_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.TranslateTextRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.translate_text), "__call__") as call:
          call.return_value = translation_service.TranslateTextResponse()
          client.translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_translate_text_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.TranslateTextRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.translate_text), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.TranslateTextResponse()
          )
          await client.translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_detect_language(
      transport: str = "grpc", request_type=translation_service.DetectLanguageRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.DetectLanguageResponse()
          response = client.detect_language(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DetectLanguageRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.DetectLanguageResponse)
  
  
  def test_detect_language_from_dict():
      test_detect_language(request_type=dict)
  
  
  def test_detect_language_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          client.detect_language()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DetectLanguageRequest()
  
  
  @pytest.mark.asyncio
  async def test_detect_language_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.DetectLanguageRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.DetectLanguageResponse()
          )
          response = await client.detect_language(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DetectLanguageRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.DetectLanguageResponse)
  
  
  @pytest.mark.asyncio
  async def test_detect_language_async_from_dict():
      await test_detect_language_async(request_type=dict)
  
  
  def test_detect_language_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.DetectLanguageRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          call.return_value = translation_service.DetectLanguageResponse()
          client.detect_language(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_detect_language_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.DetectLanguageRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.DetectLanguageResponse()
          )
          await client.detect_language(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_detect_language_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.DetectLanguageResponse()
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.detect_language(
              parent="parent_value", model="model_value", mime_type="mime_type_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].model == "model_value"
          assert args[0].mime_type == "mime_type_value"
  
  
  def test_detect_language_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.detect_language(
              translation_service.DetectLanguageRequest(),
              parent="parent_value",
              model="model_value",
              mime_type="mime_type_value",
          )
  
  
  @pytest.mark.asyncio
  async def test_detect_language_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.detect_language), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.DetectLanguageResponse()
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.DetectLanguageResponse()
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.detect_language(
              parent="parent_value", model="model_value", mime_type="mime_type_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].model == "model_value"
          assert args[0].mime_type == "mime_type_value"
  
  
  @pytest.mark.asyncio
  async def test_detect_language_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.detect_language(
              translation_service.DetectLanguageRequest(),
              parent="parent_value",
              model="model_value",
              mime_type="mime_type_value",
          )
  
  
  def test_get_supported_languages(
      transport: str = "grpc",
      request_type=translation_service.GetSupportedLanguagesRequest,
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.SupportedLanguages()
          response = client.get_supported_languages(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetSupportedLanguagesRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.SupportedLanguages)
  
  
  def test_get_supported_languages_from_dict():
      test_get_supported_languages(request_type=dict)
  
  
  def test_get_supported_languages_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          client.get_supported_languages()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetSupportedLanguagesRequest()
  
  
  @pytest.mark.asyncio
  async def test_get_supported_languages_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.GetSupportedLanguagesRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.SupportedLanguages()
          )
          response = await client.get_supported_languages(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetSupportedLanguagesRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.SupportedLanguages)
  
  
  @pytest.mark.asyncio
  async def test_get_supported_languages_async_from_dict():
      await test_get_supported_languages_async(request_type=dict)
  
  
  def test_get_supported_languages_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.GetSupportedLanguagesRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          call.return_value = translation_service.SupportedLanguages()
          client.get_supported_languages(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_get_supported_languages_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.GetSupportedLanguagesRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.SupportedLanguages()
          )
          await client.get_supported_languages(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_get_supported_languages_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.SupportedLanguages()
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.get_supported_languages(
              parent="parent_value",
              display_language_code="display_language_code_value",
              model="model_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].display_language_code == "display_language_code_value"
          assert args[0].model == "model_value"
  
  
  def test_get_supported_languages_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.get_supported_languages(
              translation_service.GetSupportedLanguagesRequest(),
              parent="parent_value",
              display_language_code="display_language_code_value",
              model="model_value",
          )
  
  
  @pytest.mark.asyncio
  async def test_get_supported_languages_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.get_supported_languages), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.SupportedLanguages()
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.SupportedLanguages()
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.get_supported_languages(
              parent="parent_value",
              display_language_code="display_language_code_value",
              model="model_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].display_language_code == "display_language_code_value"
          assert args[0].model == "model_value"
  
  
  @pytest.mark.asyncio
  async def test_get_supported_languages_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.get_supported_languages(
              translation_service.GetSupportedLanguagesRequest(),
              parent="parent_value",
              display_language_code="display_language_code_value",
              model="model_value",
          )
  
  
  def test_translate_document(
      transport: str = "grpc", request_type=translation_service.TranslateDocumentRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.TranslateDocumentResponse(
              model="model_value",
          )
          response = client.translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateDocumentRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.TranslateDocumentResponse)
      assert response.model == "model_value"
  
  
  def test_translate_document_from_dict():
      test_translate_document(request_type=dict)
  
  
  def test_translate_document_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.translate_document), "__call__"
      ) as call:
          client.translate_document()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateDocumentRequest()
  
  
  @pytest.mark.asyncio
  async def test_translate_document_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.TranslateDocumentRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.TranslateDocumentResponse(model="model_value",)
          )
          response = await client.translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.TranslateDocumentRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.TranslateDocumentResponse)
      assert response.model == "model_value"
  
  
  @pytest.mark.asyncio
  async def test_translate_document_async_from_dict():
      await test_translate_document_async(request_type=dict)
  
  
  def test_translate_document_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.TranslateDocumentRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.translate_document), "__call__"
      ) as call:
          call.return_value = translation_service.TranslateDocumentResponse()
          client.translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_translate_document_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.TranslateDocumentRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.translate_document), "__call__"
      ) as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.TranslateDocumentResponse()
          )
          await client.translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_batch_translate_text(
      transport: str = "grpc", request_type=translation_service.BatchTranslateTextRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_text), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/spam")
          response = client.batch_translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateTextRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  def test_batch_translate_text_from_dict():
      test_batch_translate_text(request_type=dict)
  
  
  def test_batch_translate_text_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_text), "__call__"
      ) as call:
          client.batch_translate_text()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateTextRequest()
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_text_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.BatchTranslateTextRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_text), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          response = await client.batch_translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateTextRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_text_async_from_dict():
      await test_batch_translate_text_async(request_type=dict)
  
  
  def test_batch_translate_text_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.BatchTranslateTextRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_text), "__call__"
      ) as call:
          call.return_value = operations_pb2.Operation(name="operations/op")
          client.batch_translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_text_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.BatchTranslateTextRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_text), "__call__"
      ) as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/op")
          )
          await client.batch_translate_text(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_batch_translate_document(
      transport: str = "grpc",
      request_type=translation_service.BatchTranslateDocumentRequest,
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/spam")
          response = client.batch_translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateDocumentRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  def test_batch_translate_document_from_dict():
      test_batch_translate_document(request_type=dict)
  
  
  def test_batch_translate_document_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          client.batch_translate_document()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateDocumentRequest()
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_document_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.BatchTranslateDocumentRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          response = await client.batch_translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.BatchTranslateDocumentRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_document_async_from_dict():
      await test_batch_translate_document_async(request_type=dict)
  
  
  def test_batch_translate_document_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.BatchTranslateDocumentRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          call.return_value = operations_pb2.Operation(name="operations/op")
          client.batch_translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_document_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.BatchTranslateDocumentRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/op")
          )
          await client.batch_translate_document(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_batch_translate_document_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.batch_translate_document(
              parent="parent_value",
              source_language_code="source_language_code_value",
              target_language_codes=["target_language_codes_value"],
              input_configs=[
                  translation_service.BatchDocumentInputConfig(
                      gcs_source=translation_service.GcsSource(
                          input_uri="input_uri_value"
                      )
                  )
              ],
              output_config=translation_service.BatchDocumentOutputConfig(
                  gcs_destination=translation_service.GcsDestination(
                      output_uri_prefix="output_uri_prefix_value"
                  )
              ),
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].source_language_code == "source_language_code_value"
          assert args[0].target_language_codes == ["target_language_codes_value"]
          assert args[0].input_configs == [
              translation_service.BatchDocumentInputConfig(
                  gcs_source=translation_service.GcsSource(input_uri="input_uri_value")
              )
          ]
          assert args[0].output_config == translation_service.BatchDocumentOutputConfig(
              gcs_destination=translation_service.GcsDestination(
                  output_uri_prefix="output_uri_prefix_value"
              )
          )
  
  
  def test_batch_translate_document_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.batch_translate_document(
              translation_service.BatchTranslateDocumentRequest(),
              parent="parent_value",
              source_language_code="source_language_code_value",
              target_language_codes=["target_language_codes_value"],
              input_configs=[
                  translation_service.BatchDocumentInputConfig(
                      gcs_source=translation_service.GcsSource(
                          input_uri="input_uri_value"
                      )
                  )
              ],
              output_config=translation_service.BatchDocumentOutputConfig(
                  gcs_destination=translation_service.GcsDestination(
                      output_uri_prefix="output_uri_prefix_value"
                  )
              ),
          )
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_document_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.batch_translate_document), "__call__"
      ) as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.batch_translate_document(
              parent="parent_value",
              source_language_code="source_language_code_value",
              target_language_codes=["target_language_codes_value"],
              input_configs=[
                  translation_service.BatchDocumentInputConfig(
                      gcs_source=translation_service.GcsSource(
                          input_uri="input_uri_value"
                      )
                  )
              ],
              output_config=translation_service.BatchDocumentOutputConfig(
                  gcs_destination=translation_service.GcsDestination(
                      output_uri_prefix="output_uri_prefix_value"
                  )
              ),
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].source_language_code == "source_language_code_value"
          assert args[0].target_language_codes == ["target_language_codes_value"]
          assert args[0].input_configs == [
              translation_service.BatchDocumentInputConfig(
                  gcs_source=translation_service.GcsSource(input_uri="input_uri_value")
              )
          ]
          assert args[0].output_config == translation_service.BatchDocumentOutputConfig(
              gcs_destination=translation_service.GcsDestination(
                  output_uri_prefix="output_uri_prefix_value"
              )
          )
  
  
  @pytest.mark.asyncio
  async def test_batch_translate_document_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.batch_translate_document(
              translation_service.BatchTranslateDocumentRequest(),
              parent="parent_value",
              source_language_code="source_language_code_value",
              target_language_codes=["target_language_codes_value"],
              input_configs=[
                  translation_service.BatchDocumentInputConfig(
                      gcs_source=translation_service.GcsSource(
                          input_uri="input_uri_value"
                      )
                  )
              ],
              output_config=translation_service.BatchDocumentOutputConfig(
                  gcs_destination=translation_service.GcsDestination(
                      output_uri_prefix="output_uri_prefix_value"
                  )
              ),
          )
  
  
  def test_create_glossary(
      transport: str = "grpc", request_type=translation_service.CreateGlossaryRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/spam")
          response = client.create_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.CreateGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  def test_create_glossary_from_dict():
      test_create_glossary(request_type=dict)
  
  
  def test_create_glossary_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          client.create_glossary()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.CreateGlossaryRequest()
  
  
  @pytest.mark.asyncio
  async def test_create_glossary_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.CreateGlossaryRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          response = await client.create_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.CreateGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  @pytest.mark.asyncio
  async def test_create_glossary_async_from_dict():
      await test_create_glossary_async(request_type=dict)
  
  
  def test_create_glossary_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.CreateGlossaryRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          call.return_value = operations_pb2.Operation(name="operations/op")
          client.create_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_create_glossary_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.CreateGlossaryRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/op")
          )
          await client.create_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_create_glossary_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.create_glossary(
              parent="parent_value",
              glossary=translation_service.Glossary(name="name_value"),
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].glossary == translation_service.Glossary(name="name_value")
  
  
  def test_create_glossary_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.create_glossary(
              translation_service.CreateGlossaryRequest(),
              parent="parent_value",
              glossary=translation_service.Glossary(name="name_value"),
          )
  
  
  @pytest.mark.asyncio
  async def test_create_glossary_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.create_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.create_glossary(
              parent="parent_value",
              glossary=translation_service.Glossary(name="name_value"),
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].glossary == translation_service.Glossary(name="name_value")
  
  
  @pytest.mark.asyncio
  async def test_create_glossary_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.create_glossary(
              translation_service.CreateGlossaryRequest(),
              parent="parent_value",
              glossary=translation_service.Glossary(name="name_value"),
          )
  
  
  def test_list_glossaries(
      transport: str = "grpc", request_type=translation_service.ListGlossariesRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.ListGlossariesResponse(
              next_page_token="next_page_token_value",
          )
          response = client.list_glossaries(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.ListGlossariesRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, pagers.ListGlossariesPager)
      assert response.next_page_token == "next_page_token_value"
  
  
  def test_list_glossaries_from_dict():
      test_list_glossaries(request_type=dict)
  
  
  def test_list_glossaries_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          client.list_glossaries()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.ListGlossariesRequest()
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.ListGlossariesRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.ListGlossariesResponse(
                  next_page_token="next_page_token_value",
              )
          )
          response = await client.list_glossaries(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.ListGlossariesRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, pagers.ListGlossariesAsyncPager)
      assert response.next_page_token == "next_page_token_value"
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_async_from_dict():
      await test_list_glossaries_async(request_type=dict)
  
  
  def test_list_glossaries_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.ListGlossariesRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          call.return_value = translation_service.ListGlossariesResponse()
          client.list_glossaries(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.ListGlossariesRequest()
  
      request.parent = "parent/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.ListGlossariesResponse()
          )
          await client.list_glossaries(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "parent=parent/value",) in kw["metadata"]
  
  
  def test_list_glossaries_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.ListGlossariesResponse()
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.list_glossaries(
              parent="parent_value", filter="filter_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].filter == "filter_value"
  
  
  def test_list_glossaries_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.list_glossaries(
              translation_service.ListGlossariesRequest(),
              parent="parent_value",
              filter="filter_value",
          )
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.ListGlossariesResponse()
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.ListGlossariesResponse()
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.list_glossaries(
              parent="parent_value", filter="filter_value",
          )
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].parent == "parent_value"
          assert args[0].filter == "filter_value"
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.list_glossaries(
              translation_service.ListGlossariesRequest(),
              parent="parent_value",
              filter="filter_value",
          )
  
  
  def test_list_glossaries_pager():
      client = TranslationServiceClient(credentials=ga_credentials.AnonymousCredentials,)
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Set the response to a series of pages.
          call.side_effect = (
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
                  next_page_token="abc",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[], next_page_token="def",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[translation_service.Glossary(),], next_page_token="ghi",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
              ),
              RuntimeError,
          )
  
          metadata = ()
          metadata = tuple(metadata) + (
              gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)),
          )
          pager = client.list_glossaries(request={})
  
          assert pager._metadata == metadata
  
          results = [i for i in pager]
          assert len(results) == 6
          assert all(isinstance(i, translation_service.Glossary) for i in results)
  
  
  def test_list_glossaries_pages():
      client = TranslationServiceClient(credentials=ga_credentials.AnonymousCredentials,)
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.list_glossaries), "__call__") as call:
          # Set the response to a series of pages.
          call.side_effect = (
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
                  next_page_token="abc",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[], next_page_token="def",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[translation_service.Glossary(),], next_page_token="ghi",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
              ),
              RuntimeError,
          )
          pages = list(client.list_glossaries(request={}).pages)
          for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
              assert page_.raw_page.next_page_token == token
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_async_pager():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials,
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.list_glossaries), "__call__", new_callable=mock.AsyncMock
      ) as call:
          # Set the response to a series of pages.
          call.side_effect = (
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
                  next_page_token="abc",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[], next_page_token="def",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[translation_service.Glossary(),], next_page_token="ghi",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
              ),
              RuntimeError,
          )
          async_pager = await client.list_glossaries(request={},)
          assert async_pager.next_page_token == "abc"
          responses = []
          async for response in async_pager:
              responses.append(response)
  
          assert len(responses) == 6
          assert all(isinstance(i, translation_service.Glossary) for i in responses)
  
  
  @pytest.mark.asyncio
  async def test_list_glossaries_async_pages():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials,
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(
          type(client.transport.list_glossaries), "__call__", new_callable=mock.AsyncMock
      ) as call:
          # Set the response to a series of pages.
          call.side_effect = (
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
                  next_page_token="abc",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[], next_page_token="def",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[translation_service.Glossary(),], next_page_token="ghi",
              ),
              translation_service.ListGlossariesResponse(
                  glossaries=[
                      translation_service.Glossary(),
                      translation_service.Glossary(),
                  ],
              ),
              RuntimeError,
          )
          pages = []
          async for page_ in (await client.list_glossaries(request={})).pages:
              pages.append(page_)
          for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
              assert page_.raw_page.next_page_token == token
  
  
  def test_get_glossary(
      transport: str = "grpc", request_type=translation_service.GetGlossaryRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.Glossary(
              name="name_value",
              entry_count=1210,
              language_pair=translation_service.Glossary.LanguageCodePair(
                  source_language_code="source_language_code_value"
              ),
          )
          response = client.get_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.Glossary)
      assert response.name == "name_value"
      assert response.entry_count == 1210
  
  
  def test_get_glossary_from_dict():
      test_get_glossary(request_type=dict)
  
  
  def test_get_glossary_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          client.get_glossary()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetGlossaryRequest()
  
  
  @pytest.mark.asyncio
  async def test_get_glossary_async(
      transport: str = "grpc_asyncio", request_type=translation_service.GetGlossaryRequest
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.Glossary(name="name_value", entry_count=1210,)
          )
          response = await client.get_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.GetGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, translation_service.Glossary)
      assert response.name == "name_value"
      assert response.entry_count == 1210
  
  
  @pytest.mark.asyncio
  async def test_get_glossary_async_from_dict():
      await test_get_glossary_async(request_type=dict)
  
  
  def test_get_glossary_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.GetGlossaryRequest()
  
      request.name = "name/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          call.return_value = translation_service.Glossary()
          client.get_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "name=name/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_get_glossary_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.GetGlossaryRequest()
  
      request.name = "name/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.Glossary()
          )
          await client.get_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "name=name/value",) in kw["metadata"]
  
  
  def test_get_glossary_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.Glossary()
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.get_glossary(name="name_value",)
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].name == "name_value"
  
  
  def test_get_glossary_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.get_glossary(
              translation_service.GetGlossaryRequest(), name="name_value",
          )
  
  
  @pytest.mark.asyncio
  async def test_get_glossary_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.get_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = translation_service.Glossary()
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              translation_service.Glossary()
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.get_glossary(name="name_value",)
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].name == "name_value"
  
  
  @pytest.mark.asyncio
  async def test_get_glossary_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.get_glossary(
              translation_service.GetGlossaryRequest(), name="name_value",
          )
  
  
  def test_delete_glossary(
      transport: str = "grpc", request_type=translation_service.DeleteGlossaryRequest
  ):
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/spam")
          response = client.delete_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DeleteGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  def test_delete_glossary_from_dict():
      test_delete_glossary(request_type=dict)
  
  
  def test_delete_glossary_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.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          client.delete_glossary()
          call.assert_called()
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DeleteGlossaryRequest()
  
  
  @pytest.mark.asyncio
  async def test_delete_glossary_async(
      transport: str = "grpc_asyncio",
      request_type=translation_service.DeleteGlossaryRequest,
  ):
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport=transport,
      )
  
      # Everything is optional in proto3 as far as the runtime is concerned,
      # and we are mocking out the actual API, so just send an empty request.
      request = request_type()
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          response = await client.delete_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == translation_service.DeleteGlossaryRequest()
  
      # Establish that the response is the type that we expect.
      assert isinstance(response, future.Future)
  
  
  @pytest.mark.asyncio
  async def test_delete_glossary_async_from_dict():
      await test_delete_glossary_async(request_type=dict)
  
  
  def test_delete_glossary_field_headers():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.DeleteGlossaryRequest()
  
      request.name = "name/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          call.return_value = operations_pb2.Operation(name="operations/op")
          client.delete_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "name=name/value",) in kw["metadata"]
  
  
  @pytest.mark.asyncio
  async def test_delete_glossary_field_headers_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Any value that is part of the HTTP/1.1 URI should be sent as
      # a field header. Set these to a non-empty value.
      request = translation_service.DeleteGlossaryRequest()
  
      request.name = "name/value"
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/op")
          )
          await client.delete_glossary(request)
  
          # Establish that the underlying gRPC stub method was called.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0] == request
  
      # Establish that the field header was sent.
      _, _, kw = call.mock_calls[0]
      assert ("x-goog-request-params", "name=name/value",) in kw["metadata"]
  
  
  def test_delete_glossary_flattened():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          client.delete_glossary(name="name_value",)
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls) == 1
          _, args, _ = call.mock_calls[0]
          assert args[0].name == "name_value"
  
  
  def test_delete_glossary_flattened_error():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          client.delete_glossary(
              translation_service.DeleteGlossaryRequest(), name="name_value",
          )
  
  
  @pytest.mark.asyncio
  async def test_delete_glossary_flattened_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Mock the actual call within the gRPC stub, and fake the request.
      with mock.patch.object(type(client.transport.delete_glossary), "__call__") as call:
          # Designate an appropriate return value for the call.
          call.return_value = operations_pb2.Operation(name="operations/op")
  
          call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(
              operations_pb2.Operation(name="operations/spam")
          )
          # Call the method with a truthy value for each flattened field,
          # using the keyword arguments to the method.
          response = await client.delete_glossary(name="name_value",)
  
          # Establish that the underlying call was made with the expected
          # request object values.
          assert len(call.mock_calls)
          _, args, _ = call.mock_calls[0]
          assert args[0].name == "name_value"
  
  
  @pytest.mark.asyncio
  async def test_delete_glossary_flattened_error_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
  
      # Attempting to call a method with both a request object and flattened
      # fields is an error.
      with pytest.raises(ValueError):
          await client.delete_glossary(
              translation_service.DeleteGlossaryRequest(), name="name_value",
          )
  
  
  def test_credentials_transport_error():
      # It is an error to provide credentials and a transport instance.
      transport = transports.TranslationServiceGrpcTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      with pytest.raises(ValueError):
          client = TranslationServiceClient(
              credentials=ga_credentials.AnonymousCredentials(), transport=transport,
          )
  
      # It is an error to provide a credentials file and a transport instance.
      transport = transports.TranslationServiceGrpcTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      with pytest.raises(ValueError):
          client = TranslationServiceClient(
              client_options={"credentials_file": "credentials.json"},
              transport=transport,
          )
  
      # It is an error to provide scopes and a transport instance.
      transport = transports.TranslationServiceGrpcTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      with pytest.raises(ValueError):
          client = TranslationServiceClient(
              client_options={"scopes": ["1", "2"]}, transport=transport,
          )
  
  
  def test_transport_instance():
      # A client may be instantiated with a custom transport instance.
      transport = transports.TranslationServiceGrpcTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      client = TranslationServiceClient(transport=transport)
      assert client.transport is transport
  
  
  def test_transport_get_channel():
      # A client may be instantiated with a custom transport instance.
      transport = transports.TranslationServiceGrpcTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      channel = transport.grpc_channel
      assert channel
  
      transport = transports.TranslationServiceGrpcAsyncIOTransport(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      channel = transport.grpc_channel
      assert channel
  
  
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  def test_transport_adc(transport_class):
      # Test default credentials are used if not provided.
      with mock.patch.object(google.auth, "default") as adc:
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport_class()
          adc.assert_called_once()
  
  
  def test_transport_grpc_default():
      # A client should use the gRPC transport by default.
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
      )
      assert isinstance(client.transport, transports.TranslationServiceGrpcTransport,)
  
  
  def test_translation_service_base_transport_error():
      # Passing both a credentials object and credentials_file should raise an error
      with pytest.raises(core_exceptions.DuplicateCredentialArgs):
          transport = transports.TranslationServiceTransport(
              credentials=ga_credentials.AnonymousCredentials(),
              credentials_file="credentials.json",
          )
  
  
  def test_translation_service_base_transport():
      # Instantiate the base transport.
      with mock.patch(
          "google.cloud.translate_v3beta1.services.translation_service.transports.TranslationServiceTransport.__init__"
      ) as Transport:
          Transport.return_value = None
          transport = transports.TranslationServiceTransport(
              credentials=ga_credentials.AnonymousCredentials(),
          )
  
      # Every method on the transport should just blindly
      # raise NotImplementedError.
      methods = (
          "translate_text",
          "detect_language",
          "get_supported_languages",
          "translate_document",
          "batch_translate_text",
          "batch_translate_document",
          "create_glossary",
          "list_glossaries",
          "get_glossary",
          "delete_glossary",
      )
      for method in methods:
          with pytest.raises(NotImplementedError):
              getattr(transport, method)(request=object())
  
      with pytest.raises(NotImplementedError):
          transport.close()
  
      # Additionally, the LRO client (a property) should
      # also raise NotImplementedError
      with pytest.raises(NotImplementedError):
          transport.operations_client
  
  
  @requires_google_auth_gte_1_25_0
  def test_translation_service_base_transport_with_credentials_file():
      # Instantiate the base transport with a credentials file
      with mock.patch.object(
          google.auth, "load_credentials_from_file", autospec=True
      ) as load_creds, mock.patch(
          "google.cloud.translate_v3beta1.services.translation_service.transports.TranslationServiceTransport._prep_wrapped_messages"
      ) as Transport:
          Transport.return_value = None
          load_creds.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport = transports.TranslationServiceTransport(
              credentials_file="credentials.json", quota_project_id="octopus",
          )
          load_creds.assert_called_once_with(
              "credentials.json",
              scopes=None,
              default_scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id="octopus",
          )
  
  
  @requires_google_auth_lt_1_25_0
  def test_translation_service_base_transport_with_credentials_file_old_google_auth():
      # Instantiate the base transport with a credentials file
      with mock.patch.object(
          google.auth, "load_credentials_from_file", autospec=True
      ) as load_creds, mock.patch(
          "google.cloud.translate_v3beta1.services.translation_service.transports.TranslationServiceTransport._prep_wrapped_messages"
      ) as Transport:
          Transport.return_value = None
          load_creds.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport = transports.TranslationServiceTransport(
              credentials_file="credentials.json", quota_project_id="octopus",
          )
          load_creds.assert_called_once_with(
              "credentials.json",
              scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id="octopus",
          )
  
  
  def test_translation_service_base_transport_with_adc():
      # Test the default credentials are used if credentials and credentials_file are None.
      with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch(
          "google.cloud.translate_v3beta1.services.translation_service.transports.TranslationServiceTransport._prep_wrapped_messages"
      ) as Transport:
          Transport.return_value = None
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport = transports.TranslationServiceTransport()
          adc.assert_called_once()
  
  
  @requires_google_auth_gte_1_25_0
  def test_translation_service_auth_adc():
      # If no credentials are provided, we should use ADC credentials.
      with mock.patch.object(google.auth, "default", autospec=True) as adc:
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          TranslationServiceClient()
          adc.assert_called_once_with(
              scopes=None,
              default_scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id=None,
          )
  
  
  @requires_google_auth_lt_1_25_0
  def test_translation_service_auth_adc_old_google_auth():
      # If no credentials are provided, we should use ADC credentials.
      with mock.patch.object(google.auth, "default", autospec=True) as adc:
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          TranslationServiceClient()
          adc.assert_called_once_with(
              scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id=None,
          )
  
  
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  @requires_google_auth_gte_1_25_0
  def test_translation_service_transport_auth_adc(transport_class):
      # If credentials and host are not provided, the transport class should use
      # ADC credentials.
      with mock.patch.object(google.auth, "default", autospec=True) as adc:
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport_class(quota_project_id="octopus", scopes=["1", "2"])
          adc.assert_called_once_with(
              scopes=["1", "2"],
              default_scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id="octopus",
          )
  
  
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  @requires_google_auth_lt_1_25_0
  def test_translation_service_transport_auth_adc_old_google_auth(transport_class):
      # If credentials and host are not provided, the transport class should use
      # ADC credentials.
      with mock.patch.object(google.auth, "default", autospec=True) as adc:
          adc.return_value = (ga_credentials.AnonymousCredentials(), None)
          transport_class(quota_project_id="octopus")
          adc.assert_called_once_with(
              scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              quota_project_id="octopus",
          )
  
  
  @pytest.mark.parametrize(
      "transport_class,grpc_helpers",
      [
          (transports.TranslationServiceGrpcTransport, grpc_helpers),
          (transports.TranslationServiceGrpcAsyncIOTransport, grpc_helpers_async),
      ],
  )
  def test_translation_service_transport_create_channel(transport_class, grpc_helpers):
      # If credentials and host are not provided, the transport class should use
      # ADC credentials.
      with mock.patch.object(
          google.auth, "default", autospec=True
      ) as adc, mock.patch.object(
          grpc_helpers, "create_channel", autospec=True
      ) as create_channel:
          creds = ga_credentials.AnonymousCredentials()
          adc.return_value = (creds, None)
          transport_class(quota_project_id="octopus", scopes=["1", "2"])
  
          create_channel.assert_called_with(
              "translate.googleapis.com:443",
              credentials=creds,
              credentials_file=None,
              quota_project_id="octopus",
              default_scopes=(
                  "https://www.googleapis.com/auth/cloud-platform",
                  "https://www.googleapis.com/auth/cloud-translation",
              ),
              scopes=["1", "2"],
              default_host="translate.googleapis.com",
              ssl_credentials=None,
              options=[
                  ("grpc.max_send_message_length", -1),
                  ("grpc.max_receive_message_length", -1),
              ],
          )
  
  
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  def test_translation_service_grpc_transport_client_cert_source_for_mtls(
      transport_class,
  ):
      cred = ga_credentials.AnonymousCredentials()
  
      # Check ssl_channel_credentials is used if provided.
      with mock.patch.object(transport_class, "create_channel") as mock_create_channel:
          mock_ssl_channel_creds = mock.Mock()
          transport_class(
              host="squid.clam.whelk",
              credentials=cred,
              ssl_channel_credentials=mock_ssl_channel_creds,
          )
          mock_create_channel.assert_called_once_with(
              "squid.clam.whelk:443",
              credentials=cred,
              credentials_file=None,
              scopes=None,
              ssl_credentials=mock_ssl_channel_creds,
              quota_project_id=None,
              options=[
                  ("grpc.max_send_message_length", -1),
                  ("grpc.max_receive_message_length", -1),
              ],
          )
  
      # Check if ssl_channel_credentials is not provided, then client_cert_source_for_mtls
      # is used.
      with mock.patch.object(transport_class, "create_channel", return_value=mock.Mock()):
          with mock.patch("grpc.ssl_channel_credentials") as mock_ssl_cred:
              transport_class(
                  credentials=cred,
                  client_cert_source_for_mtls=client_cert_source_callback,
              )
              expected_cert, expected_key = client_cert_source_callback()
              mock_ssl_cred.assert_called_once_with(
                  certificate_chain=expected_cert, private_key=expected_key
              )
  
  
  def test_translation_service_host_no_port():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
          client_options=client_options.ClientOptions(
              api_endpoint="translate.googleapis.com"
          ),
      )
      assert client.transport._host == "translate.googleapis.com:443"
  
  
  def test_translation_service_host_with_port():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(),
          client_options=client_options.ClientOptions(
              api_endpoint="translate.googleapis.com:8000"
          ),
      )
      assert client.transport._host == "translate.googleapis.com:8000"
  
  
  def test_translation_service_grpc_transport_channel():
      channel = grpc.secure_channel("http://localhost/", grpc.local_channel_credentials())
  
      # Check that channel is used if provided.
      transport = transports.TranslationServiceGrpcTransport(
          host="squid.clam.whelk", channel=channel,
      )
      assert transport.grpc_channel == channel
      assert transport._host == "squid.clam.whelk:443"
      assert transport._ssl_channel_credentials == None
  
  
  def test_translation_service_grpc_asyncio_transport_channel():
      channel = aio.secure_channel("http://localhost/", grpc.local_channel_credentials())
  
      # Check that channel is used if provided.
      transport = transports.TranslationServiceGrpcAsyncIOTransport(
          host="squid.clam.whelk", channel=channel,
      )
      assert transport.grpc_channel == channel
      assert transport._host == "squid.clam.whelk:443"
      assert transport._ssl_channel_credentials == None
  
  
  # Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are
  # removed from grpc/grpc_asyncio transport constructor.
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  def test_translation_service_transport_channel_mtls_with_client_cert_source(
      transport_class,
  ):
      with mock.patch(
          "grpc.ssl_channel_credentials", autospec=True
      ) as grpc_ssl_channel_cred:
          with mock.patch.object(
              transport_class, "create_channel"
          ) as grpc_create_channel:
              mock_ssl_cred = mock.Mock()
              grpc_ssl_channel_cred.return_value = mock_ssl_cred
  
              mock_grpc_channel = mock.Mock()
              grpc_create_channel.return_value = mock_grpc_channel
  
              cred = ga_credentials.AnonymousCredentials()
              with pytest.warns(DeprecationWarning):
                  with mock.patch.object(google.auth, "default") as adc:
                      adc.return_value = (cred, None)
                      transport = transport_class(
                          host="squid.clam.whelk",
                          api_mtls_endpoint="mtls.squid.clam.whelk",
                          client_cert_source=client_cert_source_callback,
                      )
                      adc.assert_called_once()
  
              grpc_ssl_channel_cred.assert_called_once_with(
                  certificate_chain=b"cert bytes", private_key=b"key bytes"
              )
              grpc_create_channel.assert_called_once_with(
                  "mtls.squid.clam.whelk:443",
                  credentials=cred,
                  credentials_file=None,
                  scopes=None,
                  ssl_credentials=mock_ssl_cred,
                  quota_project_id=None,
                  options=[
                      ("grpc.max_send_message_length", -1),
                      ("grpc.max_receive_message_length", -1),
                  ],
              )
              assert transport.grpc_channel == mock_grpc_channel
              assert transport._ssl_channel_credentials == mock_ssl_cred
  
  
  # Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are
  # removed from grpc/grpc_asyncio transport constructor.
  @pytest.mark.parametrize(
      "transport_class",
      [
          transports.TranslationServiceGrpcTransport,
          transports.TranslationServiceGrpcAsyncIOTransport,
      ],
  )
  def test_translation_service_transport_channel_mtls_with_adc(transport_class):
      mock_ssl_cred = mock.Mock()
      with mock.patch.multiple(
          "google.auth.transport.grpc.SslCredentials",
          __init__=mock.Mock(return_value=None),
          ssl_credentials=mock.PropertyMock(return_value=mock_ssl_cred),
      ):
          with mock.patch.object(
              transport_class, "create_channel"
          ) as grpc_create_channel:
              mock_grpc_channel = mock.Mock()
              grpc_create_channel.return_value = mock_grpc_channel
              mock_cred = mock.Mock()
  
              with pytest.warns(DeprecationWarning):
                  transport = transport_class(
                      host="squid.clam.whelk",
                      credentials=mock_cred,
                      api_mtls_endpoint="mtls.squid.clam.whelk",
                      client_cert_source=None,
                  )
  
              grpc_create_channel.assert_called_once_with(
                  "mtls.squid.clam.whelk:443",
                  credentials=mock_cred,
                  credentials_file=None,
                  scopes=None,
                  ssl_credentials=mock_ssl_cred,
                  quota_project_id=None,
                  options=[
                      ("grpc.max_send_message_length", -1),
                      ("grpc.max_receive_message_length", -1),
                  ],
              )
              assert transport.grpc_channel == mock_grpc_channel
  
  
  def test_translation_service_grpc_lro_client():
      client = TranslationServiceClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc",
      )
      transport = client.transport
  
      # Ensure that we have a api-core operations client.
      assert isinstance(transport.operations_client, operations_v1.OperationsClient,)
  
      # Ensure that subsequent calls to the property send the exact same object.
      assert transport.operations_client is transport.operations_client
  
  
  def test_translation_service_grpc_lro_async_client():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio",
      )
      transport = client.transport
  
      # Ensure that we have a api-core operations client.
      assert isinstance(transport.operations_client, operations_v1.OperationsAsyncClient,)
  
      # Ensure that subsequent calls to the property send the exact same object.
      assert transport.operations_client is transport.operations_client
  
  
  def test_glossary_path():
      project = "squid"
      location = "clam"
      glossary = "whelk"
      expected = "projects/{project}/locations/{location}/glossaries/{glossary}".format(
          project=project, location=location, glossary=glossary,
      )
      actual = TranslationServiceClient.glossary_path(project, location, glossary)
      assert expected == actual
  
  
  def test_parse_glossary_path():
      expected = {
          "project": "octopus",
          "location": "oyster",
          "glossary": "nudibranch",
      }
      path = TranslationServiceClient.glossary_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_glossary_path(path)
      assert expected == actual
  
  
  def test_common_billing_account_path():
      billing_account = "cuttlefish"
      expected = "billingAccounts/{billing_account}".format(
          billing_account=billing_account,
      )
      actual = TranslationServiceClient.common_billing_account_path(billing_account)
      assert expected == actual
  
  
  def test_parse_common_billing_account_path():
      expected = {
          "billing_account": "mussel",
      }
      path = TranslationServiceClient.common_billing_account_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_common_billing_account_path(path)
      assert expected == actual
  
  
  def test_common_folder_path():
      folder = "winkle"
      expected = "folders/{folder}".format(folder=folder,)
      actual = TranslationServiceClient.common_folder_path(folder)
      assert expected == actual
  
  
  def test_parse_common_folder_path():
      expected = {
          "folder": "nautilus",
      }
      path = TranslationServiceClient.common_folder_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_common_folder_path(path)
      assert expected == actual
  
  
  def test_common_organization_path():
      organization = "scallop"
      expected = "organizations/{organization}".format(organization=organization,)
      actual = TranslationServiceClient.common_organization_path(organization)
      assert expected == actual
  
  
  def test_parse_common_organization_path():
      expected = {
          "organization": "abalone",
      }
      path = TranslationServiceClient.common_organization_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_common_organization_path(path)
      assert expected == actual
  
  
  def test_common_project_path():
      project = "squid"
      expected = "projects/{project}".format(project=project,)
      actual = TranslationServiceClient.common_project_path(project)
      assert expected == actual
  
  
  def test_parse_common_project_path():
      expected = {
          "project": "clam",
      }
      path = TranslationServiceClient.common_project_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_common_project_path(path)
      assert expected == actual
  
  
  def test_common_location_path():
      project = "whelk"
      location = "octopus"
      expected = "projects/{project}/locations/{location}".format(
          project=project, location=location,
      )
      actual = TranslationServiceClient.common_location_path(project, location)
      assert expected == actual
  
  
  def test_parse_common_location_path():
      expected = {
          "project": "oyster",
          "location": "nudibranch",
      }
      path = TranslationServiceClient.common_location_path(**expected)
  
      # Check that the path construction is reversible.
      actual = TranslationServiceClient.parse_common_location_path(path)
      assert expected == actual
  
  
  def test_client_withDEFAULT_CLIENT_INFO():
      client_info = gapic_v1.client_info.ClientInfo()
  
      with mock.patch.object(
          transports.TranslationServiceTransport, "_prep_wrapped_messages"
      ) as prep:
          client = TranslationServiceClient(
              credentials=ga_credentials.AnonymousCredentials(), client_info=client_info,
          )
          prep.assert_called_once_with(client_info)
  
      with mock.patch.object(
          transports.TranslationServiceTransport, "_prep_wrapped_messages"
      ) as prep:
          transport_class = TranslationServiceClient.get_transport_class()
          transport = transport_class(
              credentials=ga_credentials.AnonymousCredentials(), client_info=client_info,
          )
          prep.assert_called_once_with(client_info)
  
  
  @pytest.mark.asyncio
  async def test_transport_close_async():
      client = TranslationServiceAsyncClient(
          credentials=ga_credentials.AnonymousCredentials(), transport="grpc_asyncio",
      )
      with mock.patch.object(
          type(getattr(client.transport, "grpc_channel")), "close"
      ) as close:
          async with client:
              close.assert_not_called()
          close.assert_called_once()
  
  
  def test_transport_close():
      transports = {
          "grpc": "_grpc_channel",
      }
  
      for transport, close_name in transports.items():
          client = TranslationServiceClient(
              credentials=ga_credentials.AnonymousCredentials(), transport=transport
          )
          with mock.patch.object(
              type(getattr(client.transport, close_name)), "close"
          ) as close:
              with client:
                  close.assert_not_called()
              close.assert_called_once()
  
  
  def test_client_ctx():
      transports = [
          "grpc",
      ]
      for transport in transports:
          client = TranslationServiceClient(
              credentials=ga_credentials.AnonymousCredentials(), transport=transport
          )
          # Test client calls underlying transport.
          with mock.patch.object(type(client.transport), "close") as close:
              close.assert_not_called()
              with client:
                  pass
              close.assert_called()
  