def test_upload_target_parent_folder_does_not_exist(self): source = '/tmp/k.txt' dest_uri = 'mf:/c/k.txt' def mock_get_resource_by_uri(uri): if uri == dest_uri: raise ResourceNotFoundError(uri) elif uri == 'mf:/c': raise ResourceNotFoundError(uri) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri with self.assertRaises(ResourceNotFoundError): client._prepare_upload_info(source, dest_uri)
def test_upload_fh_to_folder(self): source = io.BytesIO(b"blah") dest_uri = 'mf:/g/' def mock_get_resource_by_uri(uri): if uri == dest_uri: return Folder({ 'folderkey': 'i' * 13, 'name': 'g' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri with self.assertRaises(ValueError): client._prepare_upload_info(source, dest_uri)
class MediaFireResourceLookupTests(unittest.TestCase): """Tests for get_resource_by_uri""" def setUp(self): # we can operate w/o login self.client = MediaFireClient(_api=DummyMediaFireApi) def test_resource_by_uri_root(self): """Test that get_resource_by_uri works on root""" result = self.client.get_resource_by_uri('mf:/') self.assertEqual(result["folderkey"], "blah") def test_folder_by_uri(self): """Test that multilevel folder is resolved""" result = self.client.get_resource_by_uri('mf:///a/b') self.assertEqual(result["folderkey"], "b" * 13) def test_intermediate_file_raises_error(self): """Test that a file in the middle throws NotAFolderError""" with self.assertRaises(NotAFolderError): self.client.get_resource_by_uri('mf:///hi.txt/b') def test_file_by_uri(self): """Test that multilevel file is resolved""" result = self.client.get_resource_by_uri('mf:///a/b/hi.txt') self.assertEqual(result["quickkey"], "i" * 15) def test_missing_folder_raises_error(self): """Test that folder is reported missing if it is""" with self.assertRaises(ResourceNotFoundError): self.client.get_resource_by_uri('mf:///a/b/c/hi.txt') def test_uri_key(self): """Test that key resolution works""" result = self.client.get_resource_by_uri('mf:' + 'a' * 13) self.assertEqual(result["folderkey"], "a" * 13) def test_trailing_slash(self): """Test that URI with trailing slash works""" result = self.client.get_resource_by_uri('mf:' + 'a' * 13 + '/') self.assertEqual(result["folderkey"], "a" * 13)
def test_upload_target_file_parent_folder_is_file(self): source = '/tmp/m.txt' dest_uri = 'mf:/e/m.txt' def mock_get_resource_by_uri(uri): if uri == dest_uri: raise ResourceNotFoundError(uri) elif uri == 'mf:/e': return File({ 'quickkey': 'f' * 15, 'name': 'e' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri with self.assertRaises(NotAFolderError): client._prepare_upload_info(source, dest_uri)
def test_upload_target_file_parent_folder_is_file(self): source = '/tmp/m.txt' dest_uri = 'mf:/e/m.txt' def mock_get_resource_by_uri(uri): if uri == dest_uri: raise ResourceNotFoundError(uri) elif uri == 'mf:/e': return File({ 'quickkey': 'f' * 15, 'filename': 'e' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri with self.assertRaises(NotAFolderError): client._prepare_upload_info(source, dest_uri)
def test_existing_file_overwrite(self): source = "/tmp/f.txt" dest_uri = "mf:/a/f.txt" folder_key = 'a' * 13 quick_key = 'b' * 15 def mock_get_resource_by_uri(uri): if uri == dest_uri: return File({ 'parent_folderkey': folder_key, 'quickkey': quick_key, 'name': 'f.txt' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'f.txt') self.assertEqual(result_folder_key, folder_key)
def test_existing_file_overwrite(self): source = "/tmp/f.txt" dest_uri = "mf:/a/f.txt" folder_key = 'a' * 13 quick_key = 'b' * 15 def mock_get_resource_by_uri(uri): if uri == dest_uri: return File({ 'parent_folderkey': folder_key, 'quickkey': quick_key, 'filename': 'f.txt' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'f.txt') self.assertEqual(result_folder_key, folder_key)
def test_upload_to_folder(self): source = '/tmp/j.txt' dest_uri = 'mf:/b/' folder_key = 'c' * 13 def mock_get_resource_by_uri(uri): if uri == dest_uri: return Folder({ 'folderkey': folder_key, 'name': 'a' }) elif uri == 'mf:/b/j.txt': raise ResourceNotFoundError() client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'j.txt') self.assertEqual(result_folder_key, folder_key)
def test_upload_fh_existing_overwrite(self): source = io.BytesIO(b"blah") dest_uri = 'mf:/f/m.txt' quick_key = 'j' * 15 folder_key = 'h' * 13 def mock_get_resource_by_uri(uri): if uri == dest_uri: return File({ 'quickkey': quick_key, 'name': 'm.txt', 'parent_folderkey': folder_key }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'm.txt') self.assertEqual(result_folder_key, folder_key)
def test_upload_fh_existing_overwrite(self): source = io.BytesIO(b"blah") dest_uri = 'mf:/f/m.txt' quick_key = 'j' * 15 folder_key = 'h' * 13 def mock_get_resource_by_uri(uri): if uri == dest_uri: return File({ 'quickkey': quick_key, 'filename': 'm.txt', 'parent_folderkey': folder_key }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'm.txt') self.assertEqual(result_folder_key, folder_key)
def test_upload_to_folder_target_name_is_folder(self): source = '/tmp/j.txt' dest_uri = 'mf:/b/' folder_key = 'd' * 13 def mock_get_resource_by_uri(uri): if uri == dest_uri: return Folder({ 'folderkey': folder_key, 'name': 'b' }) elif uri == 'mf:/b/j.txt': return Folder({ 'folderkey': 'e' * 13, 'name': 'j.txt' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri with self.assertRaises(ValueError): client._prepare_upload_info(source, dest_uri)
def test_upload_target_file_doest_not_exist(self): source = '/tmp/l.txt' dest_uri = 'mf:/d/l.txt' folder_key = 'e' * 13 def mock_get_resource_by_uri(uri): if uri == dest_uri: raise ResourceNotFoundError(uri) elif uri == 'mf:/d': return Folder({ 'folderkey': folder_key, 'name': 'd' }) client = MediaFireClient() client.get_resource_by_uri = mock_get_resource_by_uri result_folder_key, result_name = client._prepare_upload_info(source, dest_uri) self.assertEqual(result_name, 'l.txt') self.assertEqual(result_folder_key, folder_key)