def test_create_alert_policy(self):
        # Setup Expected Response
        name_2 = "name2-1052831874"
        display_name = "displayName1615086568"
        expected_response = {"name": name_2, "display_name": display_name}
        expected_response = alert_pb2.AlertPolicy(**expected_response)

        # Mock the API response
        channel = ChannelStub(responses=[expected_response])
        patch = mock.patch("google.api_core.grpc_helpers.create_channel")
        with patch as create_channel:
            create_channel.return_value = channel
            client = monitoring_v3.AlertPolicyServiceClient()

        # Setup Request
        name = client.project_path("[PROJECT]")
        alert_policy = {}

        response = client.create_alert_policy(name, alert_policy)
        assert expected_response == response

        assert len(channel.requests) == 1
        expected_request = alert_service_pb2.CreateAlertPolicyRequest(
            name=name, alert_policy=alert_policy
        )
        actual_request = channel.requests[0][1]
        assert expected_request == actual_request
    def test_create_alert_policy(self):
        # Setup Expected Response
        name_2 = 'name2-1052831874'
        display_name = 'displayName1615086568'
        expected_response = {'name': name_2, 'display_name': display_name}
        expected_response = alert_pb2.AlertPolicy(**expected_response)

        # Mock the API response
        channel = ChannelStub(responses=[expected_response])
        client = monitoring_v3.AlertPolicyServiceClient(channel=channel)

        # Setup Request
        name = client.project_path('[PROJECT]')
        alert_policy = {}

        response = client.create_alert_policy(name, alert_policy)
        assert expected_response == response

        assert len(channel.requests) == 1
        expected_request = alert_service_pb2.CreateAlertPolicyRequest(
            name=name, alert_policy=alert_policy)
        actual_request = channel.requests[0][1]
        assert expected_request == actual_request
    def create_alert_policy(
        self,
        name,
        alert_policy,
        retry=google.api_core.gapic_v1.method.DEFAULT,
        timeout=google.api_core.gapic_v1.method.DEFAULT,
        metadata=None,
    ):
        """
        Creates a new alerting policy.

        Example:
            >>> from google.cloud import monitoring_v3
            >>>
            >>> client = monitoring_v3.AlertPolicyServiceClient()
            >>>
            >>> name = client.project_path('[PROJECT]')
            >>>
            >>> # TODO: Initialize `alert_policy`:
            >>> alert_policy = {}
            >>>
            >>> response = client.create_alert_policy(name, alert_policy)

        Args:
            name (str): The project in which to create the alerting policy. The format is
                ``projects/[PROJECT_ID]``.

                Note that this field names the parent container in which the alerting
                policy will be written, not the name of the created policy. The alerting
                policy that is returned will have a name that contains a normalized
                representation of this name as a prefix but adds a suffix of the form
                ``/alertPolicies/[POLICY_ID]``, identifying the policy in the container.
            alert_policy (Union[dict, ~google.cloud.monitoring_v3.types.AlertPolicy]): The requested alerting policy. You should omit the ``name`` field in
                this policy. The name will be returned in the new policy, including a
                new [ALERT\_POLICY\_ID] value.

                If a dict is provided, it must be of the same form as the protobuf
                message :class:`~google.cloud.monitoring_v3.types.AlertPolicy`
            retry (Optional[google.api_core.retry.Retry]):  A retry object used
                to retry requests. If ``None`` is specified, requests will not
                be retried.
            timeout (Optional[float]): The amount of time, in seconds, to wait
                for the request to complete. Note that if ``retry`` is
                specified, the timeout applies to each individual attempt.
            metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata
                that is provided to the method.

        Returns:
            A :class:`~google.cloud.monitoring_v3.types.AlertPolicy` instance.

        Raises:
            google.api_core.exceptions.GoogleAPICallError: If the request
                    failed for any reason.
            google.api_core.exceptions.RetryError: If the request failed due
                    to a retryable error and retry attempts failed.
            ValueError: If the parameters are invalid.
        """
        if metadata is None:
            metadata = []
        metadata = list(metadata)
        # Wrap the transport method to add retry and timeout logic.
        if "create_alert_policy" not in self._inner_api_calls:
            self._inner_api_calls[
                "create_alert_policy"] = google.api_core.gapic_v1.method.wrap_method(
                    self.transport.create_alert_policy,
                    default_retry=self._method_configs["CreateAlertPolicy"].
                    retry,
                    default_timeout=self._method_configs["CreateAlertPolicy"].
                    timeout,
                    client_info=self._client_info,
                )

        request = alert_service_pb2.CreateAlertPolicyRequest(
            name=name, alert_policy=alert_policy)
        if metadata is None:
            metadata = []
        metadata = list(metadata)
        try:
            routing_header = [("name", name)]
        except AttributeError:
            pass
        else:
            routing_metadata = google.api_core.gapic_v1.routing_header.to_grpc_metadata(
                routing_header)
            metadata.append(routing_metadata)

        return self._inner_api_calls["create_alert_policy"](request,
                                                            retry=retry,
                                                            timeout=timeout,
                                                            metadata=metadata)