예제 #1
0
        public void DeletePakuStrategyTestError()
        {
            // create some files
            DirectoryInfo dir = new DirectoryInfo(@"C:\foo");

            List <FileInfo> files = new List <FileInfo>();

            files.Add(CreateTestFile("DeletePakuStrategyTestError1.txt", "test1"));
            files.Add(CreateTestFile("DeletePakuStrategyTestError2.txt", "test2"));

            List <VirtualFileInfo> virtualFiles = files.Select(x => new VirtualFileInfo(x)).ToList();

            // insert a non-existent file in the middle
            virtualFiles.Insert(1, new VirtualFileInfo(@"C:\DeletePakuStrategyTestError.notreal"));

            IPakuStrategy strategy = new DeletePakuStrategy();
            PakuResult    result   = strategy.Eat(dir, virtualFiles, null);

            // the operation should be marked as a failure
            // the first file should have been deleted
            Assert.IsFalse(result.Success);
            Assert.IsTrue(result.Error is ArgumentException);

            Assert.AreEqual(1, result.RemovedFiles.Count);
            Assert.IsFalse(result.RemovedFiles[0].ToFileInfo().Exists);

            // the last file should be still be on disk
            Assert.IsTrue(virtualFiles[2].ToFileInfo().Exists);
        }
예제 #2
0
        public void DeletePakuStrategyTest()
        {
            // create some files
            DirectoryInfo dir = new DirectoryInfo(@"C:\foo");

            List <FileInfo> files = new List <FileInfo>();

            files.Add(CreateTestFile("DeletePakuStrategyTest1.txt", "test1"));
            files.Add(CreateTestFile("DeletePakuStrategyTest2.txt", "test2"));

            List <VirtualFileInfo> virtualFiles = files.Select(x => new VirtualFileInfo(x)).ToList();

            IPakuStrategy strategy = new DeletePakuStrategy();
            PakuResult    result   = strategy.Eat(dir, virtualFiles, null);

            // all of the files should have been deleted successfully
            Assert.IsTrue(result.Success);
            Assert.AreEqual(virtualFiles.Count, result.RemovedFiles.Count);

            foreach (VirtualFileInfo vfi in virtualFiles)
            {
                FileInfo fi = vfi.ToFileInfo();
                Assert.IsFalse(fi.Exists);
            }

            // and none should have been created
            Assert.AreEqual(0, result.CreatedFiles.Count);
        }
예제 #3
0
        public void PgpPakuStrategyTest()
        {
            // create some files
            DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory());

            List <FileInfo> files = new List <FileInfo>();

            files.Add(CreateTestFile("PgpPakuStrategyTest1.txt", "test1"));
            files.Add(CreateTestFile("PgpPakuStrategyTest2.txt", "test2"));

            List <VirtualFileInfo> virtualFiles = files.Select(x => new VirtualFileInfo(x)).ToList();

            IPakuStrategy strategy = new PgpPakuStrategy();
            PakuResult    result   = strategy.Eat(dir, virtualFiles, @"Props\UnitTestPublicKey.asc|foo");

            // all of the files should have been deleted successfully
            Assert.IsTrue(result.Success);
            Assert.AreEqual(virtualFiles.Count, result.RemovedFiles.Count);

            foreach (VirtualFileInfo vfi in virtualFiles)
            {
                FileInfo fi = vfi.ToFileInfo();
                Assert.IsFalse(fi.Exists);
            }

            // and one file should have been created
            Assert.AreEqual(1, result.CreatedFiles.Count);
            Assert.AreEqual("foo", result.CreatedFiles[0].Name.Substring(0, 3));
        }
예제 #4
0
        public void ZipPakuStrategyTestError()
        {
            // create some files
            DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory());

            List <FileInfo> files = new List <FileInfo>();

            files.Add(CreateTestFile("ZipPakuStrategyTest1.txt", "test1"));
            files.Add(CreateTestFile("ZipPakuStrategyTest2.txt", "test2"));

            List <VirtualFileInfo> virtualFiles = files.Select(x => new VirtualFileInfo(x)).ToList();

            // insert a non-existent file in the middle
            virtualFiles.Insert(1, new VirtualFileInfo(@"C:\ZipPakuStrategyTestError.notreal"));

            IPakuStrategy strategy = new ZipPakuStrategy();
            PakuResult    result   = strategy.Eat(dir, virtualFiles, null);

            // result should be marked as failure; only one file should be deleted
            Assert.IsFalse(result.Success);
            Assert.AreEqual(1, result.RemovedFiles.Count);

            // zip file should still have been created
            Assert.AreEqual(1, result.CreatedFiles.Count);
            FileInfo zipFile = result.CreatedFiles[0].ToFileInfo();

            Assert.IsTrue(zipFile.Exists);

            // clean up
            zipFile.Delete();
        }
예제 #5
0
        public void AzureBlobPakuStrategyTest()
        {
            // create test files
            List <VirtualFileInfo> files = new List <VirtualFileInfo>();

            for (int i = 0; i < 3; i++)
            {
                string fname = $"AzureBlobTest_{i}.txt";
                File.WriteAllText(fname, $"test file {i}");
                VirtualFileInfo fi = new VirtualFileInfo(new FileInfo(fname));
                files.Add(fi);
            }

            AzureBlobPakuStrategy strategy = new AzureBlobPakuStrategy();
            PakuResult            result   = strategy.Eat(new DirectoryInfo(Directory.GetCurrentDirectory()), files, @"Props\azure.json");

            Assert.IsTrue(result.Success);
            Assert.AreEqual(3, result.RemovedFiles.Count);
        }
예제 #6
0
        public void ZipPakuStrategyTest()
        {
            // create some files
            DirectoryInfo dir = new DirectoryInfo(Directory.GetCurrentDirectory());

            List <FileInfo> files = new List <FileInfo>();

            files.Add(CreateTestFile("ZipPakuStrategyTest1.txt", "test1"));
            files.Add(CreateTestFile("ZipPakuStrategyTest2.txt", "test2"));

            List <VirtualFileInfo> virtualFiles = files.Select(x => new VirtualFileInfo(x)).ToList();

            IPakuStrategy strategy = new ZipPakuStrategy();
            PakuResult    result   = strategy.Eat(dir, virtualFiles, "foo");

            // all of the files should have been deleted successfully
            Assert.IsTrue(result.Success);
            Assert.AreEqual(virtualFiles.Count, result.RemovedFiles.Count);

            // and a zip file should have been created
            Assert.AreEqual(1, result.CreatedFiles.Count);
            FileInfo zipFile = result.CreatedFiles[0].ToFileInfo();

            Assert.IsTrue(zipFile.Exists);
            Assert.AreEqual("foo", zipFile.Name.Substring(0, 3));

            // verify that zip file contains all removed files
            using (ZipArchive archive = ZipFile.Open(zipFile.FullName, ZipArchiveMode.Read))
            {
                Assert.AreEqual(result.RemovedFiles.Count, archive.Entries.Count);

                foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    Assert.IsTrue(result.RemovedFiles.Any(x => x.Name == entry.Name));
                }
            }

            // clean up
            zipFile.Delete();
        }