Ejemplo n.º 1
0
        public async Task NugetPackageExtractor_ExtractPackageAsync_Test()
        {
            // Arrange
            var expectedContent    = "Hello world";
            var rootDirPath        = "Files";
            var relativeEntryPaths = new[]
            {
                "a.txt",
                "1/b.txt",
                "1/2/c.txt"
            };

            var packageFilePath = Path.Combine(TempDirPath, "Package.nupkg");

            using (var zip = ZipFile.Open(packageFilePath, ZipArchiveMode.Create))
            {
                foreach (var entryPath in relativeEntryPaths)
                {
                    zip.CreateEntry($"{rootDirPath}/{entryPath}").WriteAllText(expectedContent);
                }
            }

            // Act
            var extractor   = new NugetPackageExtractor(rootDirPath);
            var destDirPath = Path.Combine(TempDirPath, "Output");
            await extractor.ExtractAsync(packageFilePath, destDirPath);

            // Assert
            foreach (var entryPath in relativeEntryPaths)
            {
                var destEntryPath = Path.Combine(destDirPath, entryPath);
                Assert.That(File.Exists(destEntryPath));
                Assert.That(File.ReadAllText(destEntryPath), Is.EqualTo(expectedContent));
            }
        }
Ejemplo n.º 2
0
        public async Task ExtractPackageAsync_Test()
        {
            // Arrange
            var entries = new Dictionary <string, byte[]>
            {
                { "File1.bin", new byte[] { 1, 2, 3 } },
                { "File2.bin", new byte[] { 4, 5, 6 } },
                { "SubDir1/", new byte[0] },
                { "SubDir1/File3.bin", new byte[] { 7, 8, 9 } },
                { "SubDir1/SubDir2/", new byte[0] },
                { "SubDir1/SubDir2/File4.bin", new byte[] { 10, 11, 12 } }
            };

            var packageFilePath = Path.Combine(TempDirPath, "Package.nupkg");
            var destDirPath     = Path.Combine(TempDirPath, "Output");

            CreateNugetPackage(packageFilePath, "Files", entries);

            var extractor = new NugetPackageExtractor("Files");

            // Act
            await extractor.ExtractPackageAsync(packageFilePath, destDirPath);

            // Assert
            foreach (var entry in entries)
            {
                var destEntryPath = Path.Combine(destDirPath, entry.Key);

                if (entry.Key.EndsWith("/"))
                {
                    Assert.That(Directory.Exists(destEntryPath), "Directory exists");
                }
                else
                {
                    Assert.That(File.Exists(destEntryPath), "File exists");
                    Assert.That(File.ReadAllBytes(destEntryPath), Is.EqualTo(entry.Value), "File content");
                }
            }
        }