public void PreserveReturnsResponseStream() { var mockStream = new Mock <Stream>(); var response = new MockResponse(200); response.ContentStream = mockStream.Object; HttpPipelineMessage message = new HttpPipelineMessage(new MockRequest(), new ResponseClassifier()); message.Response = response; Stream stream = message.ExtractResponseContent(); Stream stream2 = message.ExtractResponseContent(); Assert.AreSame(mockStream.Object, stream); Assert.AreSame(stream2, stream); }
public void PreserveReturnsNullWhenContentIsNull() { var response = new MockResponse(200); response.ContentStream = null; HttpPipelineMessage message = new HttpPipelineMessage(new MockRequest(), new ResponseClassifier()); message.Response = response; Stream stream = message.ExtractResponseContent(); Assert.AreSame(null, stream); }
public void PreserveSetsResponseContentToThrowingStream() { var mockStream = new Mock <Stream>(); var response = new MockResponse(200); response.ContentStream = mockStream.Object; HttpPipelineMessage message = new HttpPipelineMessage(new MockRequest(), new ResponseClassifier()); message.Response = response; Stream stream = message.ExtractResponseContent(); Assert.AreSame(mockStream.Object, stream); InvalidOperationException exception = Assert.Throws <InvalidOperationException>(() => response.ContentStream.Read(Array.Empty <byte>(), 0, 0)); Assert.AreEqual("The operation has called ExtractResponseContent and will provide the stream as part of its response type.", exception.Message); }
public async Task NonBufferedExtractedStreamReadableAfterMessageDisposed() { byte[] buffer = { 0 }; HttpPipeline httpPipeline = HttpPipelineBuilder.Build(new TestOptions()); using TestServer testServer = new TestServer( async context => { for (int i = 0; i < 1000; i++) { await context.Response.Body.WriteAsync(buffer, 0, 1); } }); // Make sure we dispose things correctly and not exhaust the connection pool for (int i = 0; i < 100; i++) { Stream extractedStream; using (HttpPipelineMessage message = httpPipeline.CreateMessage()) { message.Request.Uri.Assign(testServer.Address); message.BufferResponse = false; await httpPipeline.SendAsync(message, CancellationToken.None); Assert.AreEqual(message.Response.ContentStream.CanSeek, false); extractedStream = message.ExtractResponseContent(); } var memoryStream = new MemoryStream(); await extractedStream.CopyToAsync(memoryStream); Assert.AreEqual(memoryStream.Length, 1000); extractedStream.Dispose(); } }