def test_get_rest_flattened():
    client = RegionSslCertificatesClient(
        credentials=ga_credentials.AnonymousCredentials(), )

    # Mock the http request call within the method and fake a response.
    with mock.patch.object(Session, "request") as req:
        # Designate an appropriate value for the returned response.
        return_value = compute.SslCertificate()

        # Wrap the value into a proper Response obj
        json_return_value = compute.SslCertificate.to_json(return_value)
        response_value = Response()
        response_value.status_code = 200
        response_value._content = json_return_value.encode("UTF-8")
        req.return_value = response_value

        # Call the method with a truthy value for each flattened field,
        # using the keyword arguments to the method.
        client.get(
            project="project_value",
            region="region_value",
            ssl_certificate="ssl_certificate_value",
        )

        # Establish that the underlying call was made with the expected
        # request object values.
        assert len(req.mock_calls) == 1
        _, http_call, http_params = req.mock_calls[0]
        body = http_params.get("data")
        assert "project_value" in http_call[1] + str(body)
        assert "region_value" in http_call[1] + str(body)
        assert "ssl_certificate_value" in http_call[1] + str(body)
def test_list_rest(transport: str = "rest",
                   request_type=compute.ListRegionSslCertificatesRequest):
    client = RegionSslCertificatesClient(
        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 http request call within the method and fake a response.
    with mock.patch.object(Session, "request") as req:
        # Designate an appropriate value for the returned response.
        return_value = compute.SslCertificateList(
            id="id_value",
            items=[compute.SslCertificate(certificate="certificate_value")],
            kind="kind_value",
            next_page_token="next_page_token_value",
            self_link="self_link_value",
            warning=compute.Warning(code=compute.Warning.Code.CLEANUP_FAILED),
        )

        # Wrap the value into a proper Response obj
        json_return_value = compute.SslCertificateList.to_json(return_value)
        response_value = Response()
        response_value.status_code = 200
        response_value._content = json_return_value.encode("UTF-8")
        req.return_value = response_value
        response = client.list(request)

    # Establish that the response is the type that we expect.
    assert isinstance(response, pagers.ListPager)
    assert response.id == "id_value"
    assert response.items == [
        compute.SslCertificate(certificate="certificate_value")
    ]
    assert response.kind == "kind_value"
    assert response.next_page_token == "next_page_token_value"
    assert response.self_link == "self_link_value"
    assert response.warning == compute.Warning(
        code=compute.Warning.Code.CLEANUP_FAILED)
def test_insert_rest_flattened_error():
    client = RegionSslCertificatesClient(
        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.insert(
            compute.InsertRegionSslCertificateRequest(),
            project="project_value",
            region="region_value",
            ssl_certificate_resource=compute.SslCertificate(
                certificate="certificate_value"),
        )
def test_list_pager():
    client = RegionSslCertificatesClient(
        credentials=ga_credentials.AnonymousCredentials(), )

    # Mock the http request call within the method and fake a response.
    with mock.patch.object(Session, "request") as req:
        # Set the response as a series of pages
        response = (
            compute.SslCertificateList(
                items=[
                    compute.SslCertificate(),
                    compute.SslCertificate(),
                    compute.SslCertificate(),
                ],
                next_page_token="abc",
            ),
            compute.SslCertificateList(
                items=[],
                next_page_token="def",
            ),
            compute.SslCertificateList(
                items=[
                    compute.SslCertificate(),
                ],
                next_page_token="ghi",
            ),
            compute.SslCertificateList(items=[
                compute.SslCertificate(),
                compute.SslCertificate(),
            ], ),
        )
        # Two responses for two calls
        response = response + response

        # Wrap the values into proper Response objs
        response = tuple(
            compute.SslCertificateList.to_json(x) for x in response)
        return_values = tuple(Response() for i in response)
        for return_val, response_val in zip(return_values, response):
            return_val._content = response_val.encode("UTF-8")
            return_val.status_code = 200
        req.side_effect = return_values

        metadata = ()
        pager = client.list(request={})

        assert pager._metadata == metadata

        results = list(pager)
        assert len(results) == 6
        assert all(isinstance(i, compute.SslCertificate) for i in results)

        pages = list(client.list(request={}).pages)
        for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
            assert page_.raw_page.next_page_token == token
def test_get_rest(transport: str = "rest",
                  request_type=compute.GetRegionSslCertificateRequest):
    client = RegionSslCertificatesClient(
        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 http request call within the method and fake a response.
    with mock.patch.object(Session, "request") as req:
        # Designate an appropriate value for the returned response.
        return_value = compute.SslCertificate(
            certificate="certificate_value",
            creation_timestamp="creation_timestamp_value",
            description="description_value",
            expire_time="expire_time_value",
            id="id_value",
            kind="kind_value",
            managed=compute.SslCertificateManagedSslCertificate(
                domain_status={"key_value": "value_value"}),
            name="name_value",
            private_key="private_key_value",
            region="region_value",
            self_link="self_link_value",
            self_managed=compute.SslCertificateSelfManagedSslCertificate(
                certificate="certificate_value"),
            subject_alternative_names=["subject_alternative_names_value"],
            type_=compute.SslCertificate.Type.MANAGED,
        )

        # Wrap the value into a proper Response obj
        json_return_value = compute.SslCertificate.to_json(return_value)
        response_value = Response()
        response_value.status_code = 200
        response_value._content = json_return_value.encode("UTF-8")
        req.return_value = response_value
        response = client.get(request)

    # Establish that the response is the type that we expect.
    assert isinstance(response, compute.SslCertificate)
    assert response.certificate == "certificate_value"
    assert response.creation_timestamp == "creation_timestamp_value"
    assert response.description == "description_value"
    assert response.expire_time == "expire_time_value"
    assert response.id == "id_value"
    assert response.kind == "kind_value"
    assert response.managed == compute.SslCertificateManagedSslCertificate(
        domain_status={"key_value": "value_value"})
    assert response.name == "name_value"
    assert response.private_key == "private_key_value"
    assert response.region == "region_value"
    assert response.self_link == "self_link_value"
    assert response.self_managed == compute.SslCertificateSelfManagedSslCertificate(
        certificate="certificate_value")
    assert response.subject_alternative_names == [
        "subject_alternative_names_value"
    ]
    assert response.type_ == compute.SslCertificate.Type.MANAGED
예제 #6
0
        def __call__(
                self,
                request: compute.InsertRegionSslCertificateRequest,
                *,
                retry: OptionalRetry = gapic_v1.method.DEFAULT,
                timeout: float = None,
                metadata: Sequence[Tuple[str, str]] = (),
        ) -> compute.Operation:
            r"""Call the insert method over HTTP.

            Args:
                request (~.compute.InsertRegionSslCertificateRequest):
                    The request object. A request message for
                RegionSslCertificates.Insert. See the
                method description for details.

                retry (google.api_core.retry.Retry): Designation of what errors, if any,
                    should be retried.
                timeout (float): The timeout for this request.
                metadata (Sequence[Tuple[str, str]]): Strings which should be
                    sent along with the request as metadata.

            Returns:
                ~.compute.Operation:
                    Represents an Operation resource. Google Compute Engine
                has three Operation resources: \*
                `Global </compute/docs/reference/rest/v1/globalOperations>`__
                \*
                `Regional </compute/docs/reference/rest/v1/regionOperations>`__
                \*
                `Zonal </compute/docs/reference/rest/v1/zoneOperations>`__
                You can use an operation resource to manage asynchronous
                API requests. For more information, read Handling API
                responses. Operations can be global, regional or zonal.
                - For global operations, use the ``globalOperations``
                resource. - For regional operations, use the
                ``regionOperations`` resource. - For zonal operations,
                use the ``zonalOperations`` resource. For more
                information, read Global, Regional, and Zonal Resources.

            """

            http_options = [
                {
                    "method": "post",
                    "uri":
                    "/compute/v1/projects/{project}/regions/{region}/sslCertificates",
                    "body": "ssl_certificate_resource",
                },
            ]

            request_kwargs = compute.InsertRegionSslCertificateRequest.to_dict(
                request)
            transcoded_request = path_template.transcode(
                http_options, **request_kwargs)

            # Jsonify the request body
            body = compute.SslCertificate.to_json(
                compute.SslCertificate(transcoded_request["body"]),
                including_default_value_fields=False,
                use_integers_for_enums=False,
            )
            uri = transcoded_request["uri"]
            method = transcoded_request["method"]

            # Jsonify the query params
            query_params = json.loads(
                compute.InsertRegionSslCertificateRequest.to_json(
                    compute.InsertRegionSslCertificateRequest(
                        transcoded_request["query_params"]),
                    including_default_value_fields=False,
                    use_integers_for_enums=False,
                ))

            query_params.update(self._get_unset_required_fields(query_params))

            # Send the request
            headers = dict(metadata)
            headers["Content-Type"] = "application/json"
            response = getattr(self._session, method)(
                # Replace with proper schema configuration (http/https) logic
                "https://{host}{uri}".format(host=self._host, uri=uri),
                timeout=timeout,
                headers=headers,
                params=rest_helpers.flatten_query_params(query_params),
                data=body,
            )

            # In case of error, raise the appropriate core_exceptions.GoogleAPICallError exception
            # subclass.
            if response.status_code >= 400:
                raise core_exceptions.from_http_response(response)
            # Return the response
            return compute.Operation.from_json(response.content,
                                               ignore_unknown_fields=True)