private static void MultipartWriteSegmentAsyncComplete(IAsyncResult result) { Contract.Assert(result != null, "result cannot be null."); MultipartAsyncContext context = (MultipartAsyncContext)result.AsyncState; Contract.Assert(context != null, "context cannot be null"); MimeBodyPart part = context.PartsEnumerator.Current; try { Stream output = context.PartsEnumerator.Current.GetOutputStream(); output.EndWrite(result); } catch (Exception e) { part.Dispose(); context.TaskCompletionSource.TrySetException(new IOException(Properties.Resources.ReadAsMimeMultipartErrorWriting, e)); } if (!MoveNextSegment(context)) { MoveNextPart(context); } }
public async Task Dispose_ClosesOutputStreamOnNonMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock <Stream> mockStream = new Mock <Stream>() { CallBase = true }; mockStream.Setup(s => s.CanWrite).Returns(true); Mock <MultipartStreamProvider> mockStreamProvider = new Mock <MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny <HttpContent>(), It.IsAny <HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024, parent); bodypart.Segments.Add(new ArraySegment <byte>(new byte[] { 1 })); await bodypart.WriteSegment(bodypart.Segments[0], CancellationToken.None); bodypart.IsComplete = true; // Act bodypart.GetCompletedHttpContent(); bodypart.Dispose(); // Assert mockStream.Verify(s => s.Close(), Times.Once()); }
public void Dispose_SetsPositionToZeroOnMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock<MemoryStream> mockStream = new Mock<MemoryStream> { CallBase = true }; Mock<MultipartStreamProvider> mockStreamProvider = new Mock<MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny<HttpContent>(), It.IsAny<HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024); // Act bodypart.GetOutputStream(parent); bodypart.Dispose(); // Assert mockStream.VerifySet(s => s.Position = 0); }
public void Dispose_ClosesOutputStreamOnNonMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock<Stream> mockStream = new Mock<Stream>(); mockStream.Setup(s => s.CanWrite).Returns(true); Mock<MultipartStreamProvider> mockStreamProvider = new Mock<MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny<HttpContent>(), It.IsAny<HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024); // Act bodypart.GetOutputStream(parent); bodypart.Dispose(); // Assert mockStream.Verify(s => s.Close(), Times.Once()); }
private static bool CheckPartCompletion(MimeBodyPart part, List <HttpContent> result) { Contract.Assert(part != null, "part cannot be null."); Contract.Assert(result != null, "result cannot be null."); if (part.IsComplete) { if (part.HttpContent != null) { result.Add(part.HttpContent); } bool isFinal = part.IsFinal; part.Dispose(); return(isFinal); } return(false); }
public void Dispose_SetsPositionToZeroOnMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock<MemoryStream> mockStream = new Mock<MemoryStream> { CallBase = true }; Mock<MultipartStreamProvider> mockStreamProvider = new Mock<MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny<HttpContent>(), It.IsAny<HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024, parent); bodypart.Segments.Add(new ArraySegment<byte>(new byte[] { 1 })); bodypart.WriteSegment(bodypart.Segments[0]).Wait(); bodypart.IsComplete = true; // Act bodypart.GetCompletedHttpContent(); bodypart.Dispose(); // Assert mockStream.VerifySet(s => s.Position = 0); }
public void Dispose_SetsPositionToZeroOnMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock <MemoryStream> mockStream = new Mock <MemoryStream> { CallBase = true }; Mock <MultipartStreamProvider> mockStreamProvider = new Mock <MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny <HttpContent>(), It.IsAny <HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024); // Act bodypart.GetOutputStream(parent); bodypart.Dispose(); // Assert mockStream.VerifySet(s => s.Position = 0); }
public void Dispose_ClosesOutputStreamOnNonMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock <Stream> mockStream = new Mock <Stream>(); mockStream.Setup(s => s.CanWrite).Returns(true); Mock <MultipartStreamProvider> mockStreamProvider = new Mock <MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny <HttpContent>(), It.IsAny <HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024); // Act bodypart.GetOutputStream(parent); bodypart.Dispose(); // Assert mockStream.Verify(s => s.Close(), Times.Once()); }
public void Dispose_ClosesOutputStreamOnNonMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock<Stream> mockStream = new Mock<Stream>() { CallBase = true }; mockStream.Setup(s => s.CanWrite).Returns(true); Mock<MultipartStreamProvider> mockStreamProvider = new Mock<MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny<HttpContent>(), It.IsAny<HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024, parent); bodypart.Segments.Add(new ArraySegment<byte>(new byte[] { 1 })); bodypart.WriteSegment(bodypart.Segments[0], CancellationToken.None).Wait(); bodypart.IsComplete = true; // Act bodypart.GetCompletedHttpContent(); bodypart.Dispose(); // Assert mockStream.Verify(s => s.Close(), Times.Once()); }
public void Dispose_SetsPositionToZeroOnMemoryStream() { // Arrange HttpContent parent = new StringContent("hello"); Mock <MemoryStream> mockStream = new Mock <MemoryStream> { CallBase = true }; Mock <MultipartStreamProvider> mockStreamProvider = new Mock <MultipartStreamProvider>(); mockStreamProvider.Setup(sp => sp.GetStream(It.IsAny <HttpContent>(), It.IsAny <HttpContentHeaders>())).Returns(mockStream.Object); MimeBodyPart bodypart = new MimeBodyPart(mockStreamProvider.Object, 1024, parent); bodypart.Segments.Add(new ArraySegment <byte>(new byte[] { 1 })); bodypart.WriteSegment(bodypart.Segments[0], CancellationToken.None).Wait(); bodypart.IsComplete = true; // Act bodypart.GetCompletedHttpContent(); bodypart.Dispose(); // Assert mockStream.VerifySet(s => s.Position = 0); }
private static bool CheckPartCompletion(MimeBodyPart part, List<HttpContent> result) { Contract.Assert(part != null, "part cannot be null."); Contract.Assert(result != null, "result cannot be null."); if (part.IsComplete) { if (part.HttpContent != null) { result.Add(part.HttpContent); } bool isFinal = part.IsFinal; part.Dispose(); return isFinal; } return false; }