def testFunctionList(self): op = mount.ServerFuse() resource = op._getPath(os.path.dirname(self.publicFileName)) filelist = op._list(resource['document'], resource['model']) self.assertIn(os.path.basename(self.publicFileName), filelist) resource2 = op._getPath( os.path.dirname(os.path.dirname(self.publicFileName))) filelist = op._list(resource2['document'], resource2['model']) self.assertIn(os.path.basename(os.path.dirname(self.publicFileName)), filelist) resource3 = op._getPath(os.path.dirname(self.adminFileName)) filelist = op._list(resource3['document'], resource3['model']) self.assertIn(os.path.basename(self.adminFileName), filelist) resource4 = op._getPath( os.path.dirname(os.path.dirname(self.adminFileName))) filelist = op._list(resource4['document'], resource4['model']) self.assertIn(os.path.basename(os.path.dirname(self.adminFileName)), filelist) resource5 = op._getPath( os.path.dirname( os.path.dirname(os.path.dirname(self.adminFileName)))) filelist = op._list(resource5['document'], resource5['model']) self.assertIn( os.path.basename( os.path.dirname(os.path.dirname(self.adminFileName))), filelist)
def testFunctionAccess(self): op = mount.ServerFuse() self.assertEqual(op.access(self.publicFileName, os.F_OK), 0) self.assertEqual(op.access(self.publicFileName, os.R_OK | os.W_OK | os.X_OK), 0) self.assertEqual(op.access(self.adminFileName, os.F_OK), 0) self.assertEqual(op.access(self.adminFileName, os.R_OK), 0) self.assertEqual(op.access('/user', os.F_OK), 0)
def testFunctionStat(self): op = mount.ServerFuse() resource = op._getPath(self.publicFileName) attr = op._stat(resource['document'], resource['model']) self.assertEqual(attr['st_ino'], -1) self.assertEqual(attr['st_nlink'], 1) self.assertGreater(attr['st_mtime'], time.time() - 1e5) self.assertEqual(attr['st_ctime'], attr['st_mtime']) self.assertEqual(attr['st_mode'], 0o400 | stat.S_IFREG) self.assertGreater(attr['st_size'], len(self.knownPaths[self.publicFileName])) resource['document']['updated'] = datetime.datetime.utcfromtimestamp( time.time() + 1) File().save(resource['document']) oldmtime = attr['st_mtime'] resource = op._getPath(self.publicFileName) attr = op._stat(resource['document'], resource['model']) self.assertGreater(attr['st_mtime'], oldmtime) resource = op._getPath(os.path.dirname(self.publicFileName)) attr = op._stat(resource['document'], resource['model']) self.assertEqual(attr['st_mode'], 0o500 | stat.S_IFDIR) self.assertEqual(attr['st_size'], 0) resource = op._getPath( os.path.dirname(os.path.dirname(self.publicFileName))) attr = op._stat(resource['document'], resource['model']) self.assertEqual(attr['st_mode'], 0o500 | stat.S_IFDIR) self.assertEqual(attr['st_size'], 0)
def testFunctionCall(self): op = mount.ServerFuse() self.assertEqual(op.__call__('access', self.publicFileName, os.F_OK), 0) self.assertEqual(op.__call__('access', self.privateFileName, os.F_OK), 0) self.assertEqual(op.__call__('access', 'nosuchpath', os.F_OK), 0) with self.assertRaises(fuse.FuseOSError): self.assertTrue(op.__call__('read', self.publicFileName, 10, 0, None))
def testFunctionName(self): op = mount.ServerFuse() resource = op._getPath(self.publicFileName) name = op._name(resource['document'], resource['model']) self.assertEqual(name, os.path.basename(self.publicFileName)) resource = op._getPath(os.path.dirname(self.publicFileName)) name = op._name(resource['document'], resource['model']) self.assertEqual(name, os.path.basename(os.path.dirname(self.publicFileName)))
def testFunctionRelease(self): op = mount.ServerFuse() fh = op.open(self.publicFileName, os.O_RDONLY) self.assertIn(fh, op.openFiles) self.assertEqual(op.release(self.publicFileName, fh), 0) self.assertNotIn(fh, op.openFiles) path = os.path.dirname(self.publicFileName) fh = op.open(path, os.O_RDONLY) self.assertNotIn(fh, op.openFiles) self.assertEqual(op.release(path, fh), 0)
def testFunctionGetPath(self): op = mount.ServerFuse() resource = op._getPath(self.publicFileName) self.assertEqual(resource['model'], 'file') resource = op._getPath(os.path.dirname(self.publicFileName)) self.assertEqual(resource['model'], 'item') resource = op._getPath(os.path.dirname(os.path.dirname(self.publicFileName))) self.assertEqual(resource['model'], 'folder') resource = op._getPath(self.privateFileName) self.assertEqual(resource['model'], 'file') with self.assertRaises(fuse.FuseOSError): op._getPath('nosuchpath')
def testFunctionOpen(self): op = mount.ServerFuse() fh = op.open(self.publicFileName, os.O_RDONLY) self.assertTrue(isinstance(fh, int)) self.assertIn(fh, op.openFiles) op.release(self.publicFileName, fh) path = os.path.dirname(self.publicFileName) fh = op.open(path, os.O_RDONLY) self.assertTrue(isinstance(fh, int)) self.assertNotIn(fh, op.openFiles) for flag in (os.O_APPEND, os.O_ASYNC, os.O_CREAT, os.O_DIRECTORY, os.O_EXCL, os.O_RDWR, os.O_TRUNC, os.O_WRONLY): with self.assertRaises(fuse.FuseOSError): op.open(self.publicFileName, flag)
def testFunctionReaddir(self): op = mount.ServerFuse() path = os.path.dirname(self.publicFileName) data = op.readdir(path, 0) self.assertIn(os.path.basename(self.publicFileName), data) data = op.readdir('/user', 0) self.assertIn('admin', data) data = op.readdir('', 0) self.assertIn('user', data) self.assertIn('collection', data) self.assertIn('.', data) self.assertIn('..', data) data = op.readdir('/collection', 0) self.assertEqual(len(data), 3)
def testFunctionRead(self): op = mount.ServerFuse() fh = op.open(self.publicFileName, os.O_RDONLY) data = op.read(self.publicFileName, 200, 0, fh) if (isinstance(data, six.binary_type) and not isinstance(self.knownPaths[self.publicFileName], six.binary_type)): self.assertEqual(data.decode('utf8').strip(), self.knownPaths[self.publicFileName]) else: self.assertEqual(data.strip(), self.knownPaths[self.publicFileName]) data2 = op.read(self.publicFileName, 4, 2, fh) self.assertEqual(data[2:6], data2) op.release(self.publicFileName, fh) with self.assertRaises(fuse.FuseOSError): op.read(self.publicFileName, 4, 2, fh)
def testFunctionGetattr(self): op = mount.ServerFuse() attr = op.getattr('/user') self.assertEqual(attr['st_mode'], 0o500 | stat.S_IFDIR) self.assertEqual(attr['st_size'], 0) attr = op.getattr(self.publicFileName) self.assertEqual(attr['st_ino'], -1) self.assertEqual(attr['st_nlink'], 1) self.assertGreater(attr['st_mtime'], time.time() - 1e5) self.assertEqual(attr['st_ctime'], attr['st_mtime']) self.assertEqual(attr['st_mode'], 0o400 | stat.S_IFREG) self.assertGreater(attr['st_size'], len(self.knownPaths[self.publicFileName])) with self.assertRaises(fuse.FuseOSError): op.getattr('/user/nosuchuser')
def testFunctionDestroy(self): op = mount.ServerFuse() self.assertIsNone(op.destroy('/'))
def testFunctionFlush(self): op = mount.ServerFuse() self.assertEqual(op.flush('/user'), 0)
def testFunctionCreate(self): op = mount.ServerFuse() with self.assertRaises(fuse.FuseOSError): op.create(self.publicFileName, 0)