public void Invoke_IfBufferingErrorFaults_DisposesErrorResponse() { // Arrange Exception expectedOriginalException = CreateException(); Exception expectedErrorException = CreateException(); using (HttpContent content = CreateFaultingContent(expectedOriginalException)) using (HttpResponseMessage expectedOriginalResponse = CreateResponse(content)) using (HttpMessageHandler messageHandler = CreateStubMessageHandler(expectedOriginalResponse)) using (HttpContent errorContent = CreateFaultingContent(expectedErrorException)) using (SpyDisposeHttpResponseMessage spy = new SpyDisposeHttpResponseMessage(errorContent)) using (CancellationTokenSource tokenSource = CreateCancellationTokenSource()) { HttpMessageHandlerOptions options = CreateValidOptions(messageHandler); options.BufferPolicySelector = CreateBufferPolicySelector(bufferInput: false, bufferOutput: true); options.ExceptionHandler = CreateExceptionHandler(new ResponseMessageResult(spy)); using (HttpMessageHandlerAdapter product = CreateProductUnderTest(options)) { CancellationToken expectedCancellationToken = tokenSource.Token; IOwinRequest owinRequest = CreateFakeOwinRequest(expectedCancellationToken); IOwinResponse owinResponse = CreateFakeOwinResponse(Stream.Null); IOwinContext context = CreateStubOwinContext(owinRequest, owinResponse, isLocal: true); // Act Task task = product.Invoke(context); // Assert Assert.NotNull(task); task.WaitUntilCompleted(); Assert.Equal(TaskStatus.RanToCompletion, task.Status); Assert.True(spy.Disposed); } } }
public void Invoke_IfBufferingFaults_DisposesOriginalResponse() { // Arrange IHostBufferPolicySelector bufferPolicySelector = CreateBufferPolicySelector(bufferInput: false, bufferOutput: true); using (HttpContent content = CreateFaultingContent()) using (SpyDisposeHttpResponseMessage spy = new SpyDisposeHttpResponseMessage(content)) using (HttpMessageHandler messageHandler = CreateStubMessageHandler(spy)) { HttpMessageHandlerOptions options = CreateValidOptions(messageHandler); options.BufferPolicySelector = CreateBufferPolicySelector(bufferInput: false, bufferOutput: true); using (HttpMessageHandlerAdapter product = CreateProductUnderTest(options)) using (MemoryStream output = new MemoryStream()) { IOwinRequest owinRequest = CreateFakeOwinRequest(); IOwinResponse owinResponse = CreateFakeOwinResponse(Stream.Null); IOwinContext context = CreateStubOwinContext(owinRequest, owinResponse, isLocal: true); // Act Task task = product.Invoke(context); // Assert Assert.NotNull(task); task.WaitUntilCompleted(); Assert.Equal(TaskStatus.RanToCompletion, task.Status); Assert.True(spy.Disposed); } } }