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()); }
private static bool CheckIsFinalPart(MimeBodyPart part, ICollection <HttpContent> result) { Contract.Assert(part != null, "part cannot be null."); Contract.Assert(result != null, "result cannot be null."); if (part.IsComplete) { HttpContent partContent = part.GetCompletedHttpContent(); if (partContent != null) { result.Add(partContent); } 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_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); }