def test_constructURLFromLFN(self): resource = XROOTStorage('storageName', self.parameterDict) resource.se = MagicMock() voName = "voName" resource.se.vo = voName testLFN = "/%s/path/to/filename" % voName # with spaceToken res = resource.constructURLFromLFN(testLFN) self.assertTrue(res['OK']) self.assertEqual("protocol://host//path%s?svcClass=%s" % (testLFN, self.parameterDict['SpaceToken']), res['Value']) # no spaceToken resource.protocolParameters['SpaceToken'] = "" res = resource.constructURLFromLFN(testLFN) self.assertTrue(res['OK']) self.assertEqual("protocol://host//path%s" % (testLFN, ), res['Value'])
def test_listDirectory(self): """ Try to list the directory""" global mocked_xrootclient resource = XROOTStorage('storageName', self.parameterDict) statusMock = xrootStatusMock() statusMock.makeOk() statInfoMock = xrootStatInfoMock() statInfoMock.makeDir() updateStatMockReferences(statusMock, statInfoMock) statDir1 = xrootStatInfoMock() statDir1.makeDir() statDir1.size = 1 dir1 = xrootListEntryMock("dir1", "host", statDir1) statDir2 = xrootStatInfoMock() statDir2.makeDir() statDir2.size = 2 dir2 = xrootListEntryMock("dir2", "host", statDir2) statFile1 = xrootStatInfoMock() statFile1.makeFile() statFile1.size = 4 file1 = xrootListEntryMock("file1", "host", statFile1) directoryListMock = xrootDirectoryListMock("parent", [dir1, dir2, file1]) parentdir = xrootStatInfoMock() parentdir.makeDir() setMockDirectory(directoryListMock) resource.se = MagicMock() voName = "A" resource.se.vo = voName # We created a Directory which contains 2 subdir and 1 file aUrl = resource.constructURLFromLFN("/A")['Value'] res = resource.listDirectory(aUrl) self.assertEqual(True, res['OK']) self.assertEqual({}, res['Value']['Failed']) SubDirs = res['Value']['Successful'][aUrl]["SubDirs"] SubFiles = res['Value']['Successful'][aUrl]["Files"] self.assertEqual(2, len(SubDirs)) self.assertEqual(1, len(SubFiles)) self.assertEqual(SubFiles["/A/file1"]["Size"], 4) # Cleanup old side effect mocked_xrootclient.stat.side_effect = None # Let's try on a File. It should fail statInfoMock.makeFile() updateStatMockReferences(infoval=statInfoMock) res = resource.listDirectory(aUrl) self.assertEqual(True, res['OK']) self.assertEqual({}, res['Value']['Successful']) self.assertEqual(aUrl, res['Value']['Failed'].keys()[0])