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)); }
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)); }