def test_exact_dir(self): self.fs = FilesystemPolicy([ExactDir('/etc')]) self.checkTrue('/etc') self.checkFalse('/') self.checkFalse('/etc/passwd') self.checkFalse('/etc/shadow')
def test_exact_file(self): self.fs = FilesystemPolicy([ExactFile('/etc/passwd')]) self.checkTrue('/etc/passwd') self.checkFalse('/') self.checkFalse('/etc') self.checkFalse('/etc/p') self.checkFalse('/etc/passwd2')
def test_recursive_dir(self): self.fs = FilesystemPolicy([RecursiveDir('/usr')]) self.checkTrue('/usr') self.checkTrue('/usr/lib') self.checkTrue('/usr/lib/a/b/c/d/e') self.checkFalse('/') self.checkFalse('/etc') self.checkFalse('/us') self.checkFalse('/usr2')
def _compile_fs_jail( self, fs: Sequence[FilesystemAccessRule]) -> FilesystemPolicy: return FilesystemPolicy(fs)
def test_path_checks(self): self.fs = FilesystemPolicy([]) self.assertRaises(AssertionError, self.check, '') self.assertRaises(AssertionError, self.check, 'not/an/absolute/path') self.assertRaises(AssertionError, self.check, '/usr/lib/not/./a/../normalized/path')
def _compile_fs_jail(self, fs): return FilesystemPolicy(fs or [])