public async Task InvokeMethodAsync_CanInvokeMethodWithReturnTypeAndData() { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); var task = daprClient.InvokeMethodAsync <InvokedResponse>("test", "test"); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var envelope = await GrpcUtils.GetEnvelopeFromRequestMessageAsync <InvokeServiceEnvelope>(entry.Request); envelope.Id.Should().Be("test"); envelope.Method.Should().Be("test"); // Create Response & Respond var data = new InvokedResponse() { Name = "Look, I was invoked!" }; SendResponse(data, entry); // Validate Response var invokedResponse = await task; invokedResponse.Name.Should().Be("Look, I was invoked!"); }
public async Task InvokeMethodAsync_WithReturnTypeAndData_UsesConfiguredJsonSerializerOptions() { var httpClient = new TestHttpClient(); var jsonOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; var invokeClient = new InvokeHttpClient(httpClient, jsonOptions); var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " }; var invokedResponse = new InvokedResponse { Name = "Look, I was invoked!" }; var task = invokeClient.InvokeMethodAsync <InvokeRequest, InvokedResponse>("test", "test", invokeRequest); httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); (await entry.Request.Content.ReadAsStringAsync()).Should().Be(JsonSerializer.Serialize(invokeRequest, jsonOptions)); entry.RespondWithJson(invokedResponse, jsonOptions); var response = await task; response.Name.Should().Be(invokedResponse.Name); }
public async Task InvokeMethodAsync_WithReturnTypeAndData_WithNonDefaultVerb_WithQueryString_UsesConfiguredJsonSerializerOptions() { // Configure Client var httpClient = new TestHttpClient(); var jsonOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .UseJsonSerializationOptions(jsonOptions) .Build(); var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " }; var invokedResponse = new InvokedResponse { Name = "Look, I was invoked!" }; Dictionary <string, string> queryString = new Dictionary <string, string>(); queryString.Add("key1", "value1"); var httpExtension = new Http.HTTPExtension() { Verb = HTTPVerb.Put, QueryString = queryString }; var task = daprClient.InvokeMethodAsync <InvokeRequest, InvokedResponse>("test", "test", invokeRequest, httpExtension); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var envelope = await GrpcUtils.GetRequestFromRequestMessageAsync <InvokeServiceRequest>(entry.Request); envelope.Id.Should().Be("test"); envelope.Message.Method.Should().Be("test"); envelope.Message.ContentType.Should().Be(Constants.ContentTypeApplicationJson); envelope.Message.HttpExtension.Verb.Should().Be(Autogen.Grpc.v1.HTTPExtension.Types.Verb.Put); envelope.Message.HttpExtension.Querystring.Count.Should().Be(1); envelope.Message.HttpExtension.Querystring.ContainsKey("key1").Should().BeTrue(); envelope.Message.HttpExtension.Querystring["key1"].Should().Be("value1"); var json = envelope.Message.Data.Value.ToStringUtf8(); json.Should().Be(JsonSerializer.Serialize(invokeRequest, jsonOptions)); SendResponse(invokedResponse, entry, jsonOptions); var response = await task; response.Name.Should().Be(invokedResponse.Name); }
public async Task InvokeMethodAsync_WithReturnTypeAndData_UsesConfiguredJsonSerializerOptions() { // Configure Client var httpClient = new TestHttpClient(); var jsonOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .UseJsonSerializationOptions(jsonOptions) .Build(); var invokeRequest = new InvokeRequest() { RequestParameter = "Hello " }; var invokedResponse = new InvokedResponse { Name = "Look, I was invoked!" }; var task = daprClient.InvokeMethodAsync <InvokeRequest, InvokedResponse>("test", "test", invokeRequest); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var envelope = await GrpcUtils.GetRequestFromRequestMessageAsync <InvokeServiceRequest>(entry.Request); envelope.Id.Should().Be("test"); envelope.Message.Method.Should().Be("test"); envelope.Message.ContentType.Should().Be(Constants.ContentTypeApplicationJson); var json = envelope.Message.Data.Value.ToStringUtf8(); json.Should().Be(JsonSerializer.Serialize(invokeRequest, jsonOptions)); SendResponse(invokedResponse, entry, jsonOptions); var response = await task; response.Name.Should().Be(invokedResponse.Name); }
public async Task InvokeMethodAsync_CanInvokeMethodWithNoReturnTypeAndData() { // Configure Client var httpClient = new TestHttpClient(); var daprClient = new DaprClientBuilder() .UseGrpcChannelOptions(new GrpcChannelOptions { HttpClient = httpClient }) .Build(); InvokeRequest invokeRequest = new InvokeRequest() { RequestParameter = "Hello " }; var task = daprClient.InvokeMethodAsync <InvokeRequest>("test", "test", invokeRequest); // Get Request and validate httpClient.Requests.TryDequeue(out var entry).Should().BeTrue(); var envelope = await GrpcUtils.GetRequestFromRequestMessageAsync <InvokeServiceRequest>(entry.Request); envelope.Id.Should().Be("test"); envelope.Message.Method.Should().Be("test"); envelope.Message.ContentType.Should().Be(Constants.ContentTypeApplicationJson); var json = envelope.Message.Data.Value.ToStringUtf8(); var typeFromRequest = JsonSerializer.Deserialize <InvokeRequest>(json); typeFromRequest.RequestParameter.Should().Be("Hello "); // Create Response & Respond var response = new InvokedResponse() { Name = "Look, I was invoked!" }; SendResponse(response, entry); FluentActions.Awaiting(async() => await task).Should().NotThrow(); }