def test_test_iam_permissions_rest_flattened_error(): client = LicenseCodesClient( 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.test_iam_permissions( compute.TestIamPermissionsLicenseCodeRequest(), project="project_value", resource="resource_value", test_permissions_request_resource=compute.TestPermissionsRequest( permissions=["permissions_value"]), )
def test_test_iam_permissions_rest_flattened(): client = LicenseCodesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", ) # Mock the http request call within the method and fake a response. with mock.patch.object(type(client.transport._session), "request") as req: # Designate an appropriate value for the returned response. return_value = compute.TestPermissionsResponse() # Wrap the value into a proper Response obj response_value = Response() response_value.status_code = 200 json_return_value = compute.TestPermissionsResponse.to_json( return_value) response_value._content = json_return_value.encode("UTF-8") req.return_value = response_value # get arguments that satisfy an http rule for this method sample_request = {"project": "sample1", "resource": "sample2"} # get truthy value for each flattened field mock_args = dict( project="project_value", resource="resource_value", test_permissions_request_resource=compute.TestPermissionsRequest( permissions=["permissions_value"]), ) mock_args.update(sample_request) client.test_iam_permissions(**mock_args) # Establish that the underlying call was made with the expected # request object values. assert len(req.mock_calls) == 1 _, args, _ = req.mock_calls[0] assert path_template.validate( "https://%s/compute/v1/projects/{project}/global/licenseCodes/{resource}/testIamPermissions" % client.transport._host, args[1], )
def test_test_iam_permissions_rest_flattened(): client = LicenseCodesClient( 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.TestPermissionsResponse() # Wrap the value into a proper Response obj json_return_value = compute.TestPermissionsResponse.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. test_permissions_request_resource = compute.TestPermissionsRequest( permissions=["permissions_value"]) client.test_iam_permissions( project="project_value", resource="resource_value", test_permissions_request_resource=test_permissions_request_resource, ) # 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 "resource_value" in http_call[1] + str(body) + str(params) assert compute.TestPermissionsRequest.to_json( test_permissions_request_resource, including_default_value_fields=False, use_integers_for_enums=False, ) in http_call[1] + str(body) + str(params)
def __call__( self, request: compute.TestIamPermissionsExternalVpnGatewayRequest, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> compute.TestPermissionsResponse: r"""Call the test iam permissions method over HTTP. Args: request (~.compute.TestIamPermissionsExternalVpnGatewayRequest): The request object. A request message for ExternalVpnGateways.TestIamPermissions. 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.TestPermissionsResponse: """ http_options = [ { "method": "post", "uri": "/compute/v1/projects/{project}/global/externalVpnGateways/{resource}/testIamPermissions", "body": "test_permissions_request_resource", }, ] request_kwargs = compute.TestIamPermissionsExternalVpnGatewayRequest.to_dict( request ) transcoded_request = path_template.transcode(http_options, **request_kwargs) # Jsonify the request body body = compute.TestPermissionsRequest.to_json( compute.TestPermissionsRequest(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.TestIamPermissionsExternalVpnGatewayRequest.to_json( compute.TestIamPermissionsExternalVpnGatewayRequest( 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.TestPermissionsResponse.from_json( response.content, ignore_unknown_fields=True )