private IFileSystem GenerateMockFileSystem() { MockFileSystem fileSystem = new MockFileSystem(); fileSystem.AddMockFile(@"c:\logs\abc\status.txt", _checkpoints[1], "this is the status file!"); fileSystem.AddMockFile(@"c:\logs\abc\Faults\1\oatmeal.txt", _checkpoints[0], "this is the oatmeal file!"); fileSystem.AddMockFile(@"c:\logs\abc\Faults\2\potatoes.txt", _checkpoints[0], "here, have some potatoes"); fileSystem.AddMockFile(@"c:\logs\abc\Faults\3\carrots.txt", _checkpoints[1], "carrots are orange"); fileSystem.AddMockFile(@"c:\logs\abc\Reproducing\4\tomatoes.txt", _checkpoints[1], "tomatoes are nutritious"); fileSystem.AddMockFile(@"c:\logs\def\status.txt", _checkpoints[3], "hamburgers without cheese are called hamburgers"); fileSystem.AddMockFile(@"c:\logs\def\Faults\1\oatmeal.txt", _checkpoints[3], "this is a duplicate oatmeal file"); fileSystem.AddMockFile(@"c:\logs\def\Faults\15\hamburgers.txt", _checkpoints[2], "hamburgers without cheese are called hamburgers"); fileSystem.AddMockFile(@"c:\logs\def\Faults\18\lettuce.txt", _checkpoints[3], "let us eat lettuce"); return(fileSystem); }
public void DirectoryTraversalTest() { // // This test should throw an exception because the package is attempting to cause FolderUnpacker to unpack outside of // the destination folder. // MockFileSystem mockFileSystem = new MockFileSystem(); mockFileSystem.AddMockFile(@"c:\root\status.txt", new DateTime(2012, 5, 15, 2, 15, 08), "this is the status."); mockFileSystem.AddMockFile(@"c:\root\..\evil.dat", new DateTime(2012, 5, 15, 2, 15, 08), "this is an evil file that's attempting to do directory traversal."); PeachFolderPackager packager = new PeachFolderPackager(mockFileSystem); byte[] packedBytes = packager.PackFolder(@"c:\root", new DateTime(0)); MockFileSystem destinationFileSystem = new MockFileSystem(); FolderUnpacker unpackager = new FolderUnpacker(destinationFileSystem, "xyz"); unpackager.UnpackFolder(@"c:\collectedlogs", packedBytes); }