def test_move_file_to_file(OSF_project): args = MockArgs(project='1234', username='******', source='osfstorage/a/a/a', target='osfstorage/c/newfile') def simple_getenv(key): if key == 'OSF_PASSWORD': return 'secret' with patch('osfclient.cli.os.getenv', side_effect=simple_getenv): move(args) OSF_project.assert_called_once_with('1234') MockProject = OSF_project.return_value MockStorage = MockProject._storage_mock.return_value for f in MockStorage.files: mock_calls = list(f.mock_calls) if f._path_mock.return_value == '/a/a/a': assert call.move_to( 'osfstorage', [f for f in MockStorage.folders if f.path == '/c'][0], to_filename='newfile', force=False) in mock_calls
def test_anonymous_doesnt_work(): args = MockArgs(project='1234') def simple_getenv(key): return None with pytest.raises(SystemExit) as e: with patch('osfclient.cli.os.getenv', side_effect=simple_getenv) as mock_getenv: move(args) expected = 'move a file you need to provide a username and password' assert expected in e.value.args[0]
def test_non_existant_file(OSF_project): args = MockArgs(project='1234', username='******', source='osfstorage/DOESNTEXIST/a', target='osfstorage/c/') def simple_getenv(key): if key == 'OSF_PASSWORD': return 'secret' with patch('osfclient.cli.os.getenv', side_effect=simple_getenv): move(args) OSF_project.assert_called_once_with('1234') # check that all files in osfstorage are visited but non get deleted MockProject = OSF_project.return_value MockStorage = MockProject._storage_mock.return_value for f in MockStorage.files: assert f._path_mock.called assert call.move_to('osfstorage', 'c/', force=False) not in f.mock_calls
def test_wrong_storage_name(OSF_project): args = MockArgs(project='1234', username='******', source='DOESNTEXIST/a/a/a', target='osfstorage/c/') def simple_getenv(key): if key == 'OSF_PASSWORD': return 'secret' with patch('osfclient.cli.os.getenv', side_effect=simple_getenv): move(args) OSF_project.assert_called_once_with('1234') # the mock storage is called osfstorage, so we should not call remove() MockProject = OSF_project.return_value MockStorage = MockProject._storage_mock.return_value for f in MockStorage.files: if f._path_mock.return_value == '/a/a/a': assert call.move_to('osfstorage', 'c/', force=False) not in f.mock_calls
def test_move_folder_to_root(OSF_project): args = MockArgs(project='1234', username='******', source='osfstorage/a/a', target='osfstorage/') def simple_getenv(key): if key == 'OSF_PASSWORD': return 'secret' with patch('osfclient.cli.os.getenv', side_effect=simple_getenv): move(args) OSF_project.assert_called_once_with('1234') MockProject = OSF_project.return_value MockStorage = MockProject._storage_mock.return_value for f in MockStorage.folders: if f._path_mock.return_value == '/a/a': assert call.move_to('osfstorage', MockStorage, to_foldername=None, force=False) in f.mock_calls