private static async Task ScrubZipFile(string inputFile) { var directory = Path.GetDirectoryName(inputFile); var filename = Path.GetFileNameWithoutExtension(inputFile); var outputFileName = $"{directory}\\{filename}-scrubbed.zip"; using (var inputZip = new ZipArchive(File.Open(inputFile, FileMode.Open))) { var scrubbedData = ProtobufHeaderCleaner.RemoveExcessBytes(inputZip); using (var outputZip = new ZipArchive(File.Open(outputFileName, FileMode.CreateNew), ZipArchiveMode.Create)) { foreach (var entry in inputZip.Entries) { if (entry.Name == ZippedContentEntryNames.EksGaenSig) { await outputZip.WriteEntryAsync(entry.Name, scrubbedData); } else { await outputZip.WriteEntryAsync( entry.Name, inputZip.ReadEntry(entry.Name)); } } } } }
public void RegularProtobufHeader_RemoveExcessBytes_HeaderWithoutExtraBytes() { //Arrange Func <ZipArchive, byte[]> sut = x => ProtobufHeaderCleaner.RemoveExcessBytes(x); var testFileLocation = "ProtobufHeaderTestFile.zip"; //found in Resources-folder; copied to destination after build var expectedLength = 70; //Act byte[] result; using (var testZip = new ZipArchive(File.Open(testFileLocation, FileMode.Open))) { result = sut.Invoke(testZip); } //Assert result.Should().NotBeNull(); result.Length.Should().Be(expectedLength); }