Пример #1
0
        public async Task InvokeBindingRequest_WithNullData_ValidateRequest()
        {
            await using var client = TestClient.CreateForDaprClient();

            var req = await client.CaptureGrpcRequestAsync(async daprClient =>
            {
                return(await daprClient.InvokeBindingAsync <InvokeRequest, Widget>("binding", "operation", null));
            });

            var resp = new InvokeBindingResponse
            {
                Data = ByteString.CopyFrom(JsonSerializer.SerializeToUtf8Bytes(new Widget()
                {
                    Color = "red",
                }, client.InnerClient.JsonSerializerOptions))
            };
            var response = await req.CompleteWithMessageAsync(resp);

            var envelope = await req.GetRequestEnvelopeAsync <InvokeBindingRequest>();

            envelope.Name.Should().Be("binding");
            envelope.Operation.Should().Be("operation");

            Assert.Equal("red", response.Color);
        }
        /// <inheritdoc/>
        public override async ValueTask <TResponse> InvokeBindingAsync <TRequest, TResponse>(
            string name,
            string operation,
            TRequest data,
            Dictionary <string, string> metadata = default,
            CancellationToken cancellationToken  = default)
        {
            ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
            ArgumentVerifier.ThrowIfNullOrEmpty(operation, nameof(operation));

            InvokeBindingResponse response = await MakeInvokeBindingRequestAsync(name, operation, data, metadata, cancellationToken);

            return(ConvertFromInvokeBindingResponse <TResponse>(response, this.jsonSerializerOptions));
        }
Пример #3
0
        public async Task InvokeBindingRequest_WithCustomRequest_ValidateRequest()
        {
            await using var client = TestClient.CreateForDaprClient();

            var data = new InvokeRequest {
                RequestParameter = "Test"
            };
            var metadata = new Dictionary <string, string>
            {
                { "key1", "value1" }
            };
            var req = await client.CaptureGrpcRequestAsync(async daprClient =>
            {
                return(await daprClient.InvokeBindingAsync <InvokeRequest, Widget>("binding", "operation", data, metadata));
            });

            var resp = new InvokeBindingResponse
            {
                Data = ByteString.CopyFrom(JsonSerializer.SerializeToUtf8Bytes(new Widget()
                {
                    Color = "red",
                }, client.InnerClient.JsonSerializerOptions))
            };
            var response = await req.CompleteWithMessageAsync(resp);

            var envelope = await req.GetRequestEnvelopeAsync <InvokeBindingRequest>();

            envelope.Name.Should().Be("binding");
            envelope.Operation.Should().Be("operation");
            envelope.Metadata.Count.Should().Be(1);
            envelope.Metadata.Keys.Contains("key1").Should().BeTrue();
            envelope.Metadata["key1"].Should().Be("value1");

            var json            = envelope.Data.ToStringUtf8();
            var typeFromRequest = JsonSerializer.Deserialize <InvokeRequest>(json, client.InnerClient.JsonSerializerOptions);

            typeFromRequest.RequestParameter.Should().Be("Test");

            Assert.Equal("red", response.Color);
        }
        private static T ConvertFromInvokeBindingResponse <T>(InvokeBindingResponse response, JsonSerializerOptions options = null)
        {
            var responseData = response.Data.ToStringUtf8();

            return(JsonSerializer.Deserialize <T>(responseData, options));
        }