Skip to content

Commit

Permalink
Add WriteResponseHeadersAsync test (#2452)
Browse files Browse the repository at this point in the history
Co-authored-by: Brennan <brecon@microsoft.com>
  • Loading branch information
JamesNK and BrennanConroy authored Jun 6, 2024
1 parent 5e6821c commit 434a5ba
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions test/FunctionalTests/Client/UnaryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,37 @@ Task<HelloReply> UnaryThrowError(HelloRequest request, ServerCallContext context
StringAssert.StartsWith("Failed to deserialize response message.", call.GetStatus().Detail);
}

[Test]
public async Task WriteResponseHeadersAsync_HeadersSentEarly()
{
var tcs = new TaskCompletionSource<HelloReply>(TaskCreationOptions.RunContinuationsAsynchronously);

async Task<HelloReply> UnaryThrowError(HelloRequest request, ServerCallContext context)
{
await context.WriteResponseHeadersAsync(new Metadata
{
new Metadata.Entry("key", "value")
});

return await tcs.Task;
}

// Arrange
var method = Fixture.DynamicGrpc.AddUnaryMethod<HelloRequest, HelloReply>(UnaryThrowError);
var channel = CreateChannel();
var client = TestClientFactory.Create(channel, method);

// Act
var call = client.UnaryCall(new HelloRequest());

// Assert
var headers = await call.ResponseHeadersAsync.DefaultTimeout();
Assert.AreEqual("value", headers.GetValue("key"));
Assert.IsFalse(call.ResponseAsync.IsCompleted);

tcs.SetResult(new HelloReply());
}

[TestCase("fr", "fr")]
[TestCase(null, "en-US")]
public async Task Unary_SetAcceptLanguage_ServerCultureChanged(string clientAcceptLanguage, string expectedServerCulture)
Expand Down

0 comments on commit 434a5ba

Please sign in to comment.