public void Write() { var source = new MemoryStream(); var stream = new HashingWriteStream(null, source, new SHA256CryptoServiceProvider()); stream.Write(textBytes, 0, textBytes.Length); Assert.That(Encoding.UTF8.GetString(source.ToArray()), Is.EqualTo(text)); }
public async Task CopyToAsync_Writes() { var source = new MemoryStream(textBytes); var dest = new MemoryStream(); var stream = new HashingWriteStream(null, dest, new SHA256CryptoServiceProvider()); await source.CopyToAsync(stream); Assert.That(dest.ToArray(), Is.EqualTo(textBytes)); }
public void ComputesHash() { var stream = new HashingWriteStream(null, new MemoryStream(), new SHA256CryptoServiceProvider()); stream.Write(textBytes, 0, textBytes.Length); stream.Close(); var expectedHash = new SHA256CryptoServiceProvider().ComputeHash(textBytes); Assert.That(stream.Hash, Is.EqualTo(expectedHash)); }
public async Task CopyToAsync_ComputesHash() { var source = new MemoryStream(textBytes); var dest = new MemoryStream(); var stream = new HashingWriteStream(null, dest, new SHA256CryptoServiceProvider()); await source.CopyToAsync(stream); stream.Close(); var expectedHash = new SHA256CryptoServiceProvider().ComputeHash(textBytes); Assert.That(stream.Hash, Is.EqualTo(expectedHash)); }
public void StreamsContentToRepository() { var stream = new HashingWriteStream("**no-file**", new MemoryStream(), HashAlgorithm.Create("SHA256")); repositoryMock.Setup(r => r.CreateStreamForStagingPackage()).Returns(stream); var provider = formatter.CreateStreamProvider(); var content = new StringContent("content"); content.Headers.Add("Content-Disposition", @"form-data; name=""package""; filename=""package"""); var result = provider.GetStream(content, content.Headers); Assert.That(result, Is.SameAs(stream)); }
public async Task LoadsPackageFromStream() { const string ContentDisposition = "example"; var stream = new HashingWriteStream("**no-file**", new MemoryStream(), HashAlgorithm.Create("SHA256")); var package = new TestPackage(); repositoryMock.Setup(r => r.LoadStagedPackage(stream)).Returns(package); var provider = formatter.CreateStreamProvider(); provider.AddStream(ContentDisposition, stream); var result = await formatter.ReadFormDataFromStreamAsync(provider); Assert.That(result, Is.SameAs(package)); }
public async Task DiscardsStreamOnFailure() { const string ContentDisposition = "example"; var stream = new HashingWriteStream("**no-file**", new MemoryStream(), HashAlgorithm.Create("SHA256")); var exception = new Exception("invalid package"); repositoryMock.Setup(r => r.LoadStagedPackage(stream)).Throws(exception); var provider = formatter.CreateStreamProvider(); provider.AddStream(ContentDisposition, stream); try { await formatter.ReadFormDataFromStreamAsync(provider); Assert.Fail("Expected mock exception to be thrown."); } catch (Exception ex) { Assert.That(ex, Is.SameAs(exception)); } repositoryMock.Verify(r => r.DiscardStagedPackage(stream), Times.Once); }
public virtual IFastZipPackage LoadStagedPackage(HashingWriteStream packageStream) { packageStream.Dispose(); return FastZipPackage.Open(packageStream.FileLocation, packageStream.Hash); }
public void DiscardStagedPackage(HashingWriteStream packageStream) { packageStream.Dispose(); FileSystem.DeleteFile(packageStream.FileLocation); }
public override IFastZipPackage LoadStagedPackage(HashingWriteStream packageStream) { packageStream.Close(); return new FastZipPackage { Id = "Sample", Version = new SemanticVersion("1.0"), FileLocation = packageStream.FileLocation, Hash = packageStream.Hash }; }