예제 #1
0
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
예제 #2
0
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]
예제 #3
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
예제 #4
0
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
예제 #5
0
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