Пример #1
0
        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);
        }