public async Task SubmitResponseAsync_ExistingCorrelationId_CompletesRequest() { // Arrange Target.Value.Start(); var acceptRequestTask = Target.Value.AcceptRequestAsync(CancellationToken); var httpRequestTask = HttpClient.SendAsync(GetHttpRequestMessage, CancellationToken); var httpRequest = await acceptRequestTask; // Act await Target.Value.SubmitResponseAsync(HttpResponse); var httpResponseMessage = await httpRequestTask; // Assert httpResponseMessage.StatusCode.ShouldBe(HttpResponse.StatusCode); httpResponseMessage.ReasonPhrase.ShouldBe(HttpResponse.StatusDescription); foreach (var headerName in HttpResponseHeaders.AllKeys) { var headerValue = HttpResponseHeaders.Get(headerName); if (headerName.StartsWith("Content")) { httpResponseMessage.Content.Headers.GetValues(headerName).ShouldNotBe(null); httpResponseMessage.Content.Headers.GetValues(headerName).First().ShouldBe(headerValue); } else { httpResponseMessage.Headers.GetValues(headerName).ShouldNotBe(null); httpResponseMessage.Headers.GetValues(headerName).First().ShouldBe(headerValue); } } var responseBody = await httpResponseMessage.Content.ReadAsStringAsync(); responseBody.ShouldBe(ResponseBody); }