public virtual void TestAclMethodsPathTranslation()
        {
            Configuration conf = new Configuration();

            conf.SetClass("fs.mockfs.impl", typeof(TestChRootedFileSystem.MockFileSystem), typeof(
                              FileSystem));
            URI chrootUri = URI.Create("mockfs://foo/a/b");
            ChRootedFileSystem chrootFs = new ChRootedFileSystem(chrootUri, conf);
            FileSystem         mockFs   = ((FilterFileSystem)chrootFs.GetRawFileSystem()).GetRawFileSystem
                                              ();
            Path             chrootPath = new Path("/c");
            Path             rawPath    = new Path("/a/b/c");
            IList <AclEntry> entries    = Collections.EmptyList();

            chrootFs.ModifyAclEntries(chrootPath, entries);
            Org.Mockito.Mockito.Verify(mockFs).ModifyAclEntries(rawPath, entries);
            chrootFs.RemoveAclEntries(chrootPath, entries);
            Org.Mockito.Mockito.Verify(mockFs).RemoveAclEntries(rawPath, entries);
            chrootFs.RemoveDefaultAcl(chrootPath);
            Org.Mockito.Mockito.Verify(mockFs).RemoveDefaultAcl(rawPath);
            chrootFs.RemoveAcl(chrootPath);
            Org.Mockito.Mockito.Verify(mockFs).RemoveAcl(rawPath);
            chrootFs.SetAcl(chrootPath, entries);
            Org.Mockito.Mockito.Verify(mockFs).SetAcl(rawPath, entries);
            chrootFs.GetAclStatus(chrootPath);
            Org.Mockito.Mockito.Verify(mockFs).GetAclStatus(rawPath);
        }
        public virtual void TestDeleteOnExitPathHandling()
        {
            Configuration conf = new Configuration();

            conf.SetClass("fs.mockfs.impl", typeof(TestChRootedFileSystem.MockFileSystem), typeof(
                              FileSystem));
            URI chrootUri = URI.Create("mockfs://foo/a/b");
            ChRootedFileSystem chrootFs = new ChRootedFileSystem(chrootUri, conf);
            FileSystem         mockFs   = ((FilterFileSystem)chrootFs.GetRawFileSystem()).GetRawFileSystem
                                              ();
            // ensure delete propagates the correct path
            Path chrootPath = new Path("/c");
            Path rawPath    = new Path("/a/b/c");

            chrootFs.Delete(chrootPath, false);
            Org.Mockito.Mockito.Verify(mockFs).Delete(Eq(rawPath), Eq(false));
            Org.Mockito.Mockito.Reset(mockFs);
            // fake that the path exists for deleteOnExit
            FileStatus stat = Org.Mockito.Mockito.Mock <FileStatus>();

            Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(rawPath))).ThenReturn(stat);
            // ensure deleteOnExit propagates the correct path
            chrootFs.DeleteOnExit(chrootPath);
            chrootFs.Close();
            Org.Mockito.Mockito.Verify(mockFs).Delete(Eq(rawPath), Eq(true));
        }