示例#1
0
def test_get_rest_flattened():
    client = GlobalAddressesClient(
        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.Address()

        # Wrap the value into a proper Response obj
        json_return_value = compute.Address.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",
            address="address_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")
        params = http_params.get("params")
        assert "project_value" in http_call[1] + str(body) + str(params)
        assert "address_value" in http_call[1] + str(body) + str(params)
示例#2
0
def test_insert_rest_flattened_error():
    client = GlobalAddressesClient(
        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.InsertGlobalAddressRequest(),
            project="project_value",
            address_resource=compute.Address(address="address_value"),
        )
示例#3
0
def test_list_rest(transport: str = "rest",
                   request_type=compute.ListGlobalAddressesRequest):
    client = GlobalAddressesClient(
        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.AddressList(
            id="id_value",
            items=[compute.Address(address="address_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.AddressList.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.Address(address="address_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)
示例#4
0
def test_list_pager():
    client = GlobalAddressesClient(
        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.AddressList(
                items=[
                    compute.Address(),
                    compute.Address(),
                    compute.Address(),
                ],
                next_page_token="abc",
            ),
            compute.AddressList(
                items=[],
                next_page_token="def",
            ),
            compute.AddressList(
                items=[
                    compute.Address(),
                ],
                next_page_token="ghi",
            ),
            compute.AddressList(items=[
                compute.Address(),
                compute.Address(),
            ], ),
        )
        # Two responses for two calls
        response = response + response

        # Wrap the values into proper Response objs
        response = tuple(compute.AddressList.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.Address) 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
示例#5
0
def test_get_rest(transport: str = "rest",
                  request_type=compute.GetGlobalAddressRequest):
    client = GlobalAddressesClient(
        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.Address(
            address="address_value",
            address_type=compute.Address.AddressType.EXTERNAL,
            creation_timestamp="creation_timestamp_value",
            description="description_value",
            id=205,
            ip_version=compute.Address.IpVersion.IPV4,
            kind="kind_value",
            name="name_value",
            network="network_value",
            network_tier=compute.Address.NetworkTier.PREMIUM,
            prefix_length=1391,
            purpose=compute.Address.Purpose.DNS_RESOLVER,
            region="region_value",
            self_link="self_link_value",
            status=compute.Address.Status.IN_USE,
            subnetwork="subnetwork_value",
            users=["users_value"],
        )

        # Wrap the value into a proper Response obj
        json_return_value = compute.Address.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.Address)
    assert response.address == "address_value"
    assert response.address_type == compute.Address.AddressType.EXTERNAL
    assert response.creation_timestamp == "creation_timestamp_value"
    assert response.description == "description_value"
    assert response.id == 205
    assert response.ip_version == compute.Address.IpVersion.IPV4
    assert response.kind == "kind_value"
    assert response.name == "name_value"
    assert response.network == "network_value"
    assert response.network_tier == compute.Address.NetworkTier.PREMIUM
    assert response.prefix_length == 1391
    assert response.purpose == compute.Address.Purpose.DNS_RESOLVER
    assert response.region == "region_value"
    assert response.self_link == "self_link_value"
    assert response.status == compute.Address.Status.IN_USE
    assert response.subnetwork == "subnetwork_value"
    assert response.users == ["users_value"]
示例#6
0
        def __call__(
                self,
                request: compute.InsertGlobalAddressRequest,
                *,
                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.InsertGlobalAddressRequest):
                    The request object. A request message for
                GlobalAddresses.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}/global/addresses",
                    "body": "address_resource",
                },
            ]

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

            # Jsonify the request body
            body = compute.Address.to_json(
                compute.Address(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.InsertGlobalAddressRequest.to_json(
                    compute.InsertGlobalAddressRequest(
                        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)