code: def test_invalid_trigger_union_field(
      self, mock_hook, trigger, message
  ):
      mock_hook.return_value.upload_function_zip.return_value = (
          "https://uploadUrl"
      )
      body = deepcopy(VALID_BODY)
      body.pop("httpsTrigger", None)
      body.pop("eventTrigger", None)
      body.update(trigger)
      with pytest.raises(AirflowException) as ctx:
          op = CloudFunctionDeployFunctionOperator(
              project_id="test_project_id",
              location="test_region",
              body=body,
              task_id="id",
          )
          op.execute(None)
      err = ctx.value
      assert message in str(err)
      mock_hook.assert_called_once_with(
          api_version="v1",
          gcp_conn_id="google_cloud_default",
          impersonation_chain=None,
      )
      mock_hook.reset_mock()
  
imports: from __future__ import annotations
  from copy import deepcopy
  from unittest import mock
  import httplib2
  import pytest
  from googleapiclient.errors import HttpError
  from airflow.exceptions import AirflowException
  from airflow.providers.google.cloud.operators.functions import FUNCTION_NAME_PATTERN, CloudFunctionDeleteFunctionOperator, CloudFunctionDeployFunctionOperator, CloudFunctionInvokeFunctionOperator
  from airflow.version import version
label_desc: Use image node_id 15 for calling the TestGcfFunctionDeploy obj's underlying member method code with example usage: obj.test_invalid_trigger_union_field(mock_hook, trigger, message) without return types