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)); } }
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"); } } }