from osfclient.tests.mocks import MockArgs from osfclient.tests.mocks import MockProject def test_anonymous_doesnt_work(): args = MockArgs(project='1234') with pytest.raises(SystemExit) as e: remove(args) expected = 'remove a file you need to provide a username and password' assert expected in e.value.args[0] @patch.object(OSF, 'project', return_value=MockProject('1234')) def test_remove_file(OSF_project): args = MockArgs(project='1234', username='******', target='osfstorage/a/a/a') def simple_getenv(key): if key == 'OSF_PASSWORD': return 'secret' with patch('osfclient.cli.os.getenv', side_effect=simple_getenv): remove(args) OSF_project.assert_called_once_with('1234') MockProject = OSF_project.return_value MockStorage = MockProject._storage_mock.return_value for f in MockStorage.files:
import pytest import mock from mock import call, patch, mock_open from osfclient import OSF from osfclient.cli import fetch from osfclient.tests.mocks import MockProject from osfclient.tests.mocks import MockArgs @patch('osfclient.cli.makedirs') @patch('osfclient.cli.os.path.exists', return_value=False) @patch.object(OSF, 'project', return_value=MockProject('1234')) def test_fetch_file(OSF_project, os_path_exists, os_makedirs): # check that `osf fetch` opens the right files with the right name and mode args = MockArgs(project='1234', remote='osfstorage/a/a/a') mock_open_func = mock_open() with patch('osfclient.cli.open', mock_open_func): fetch(args) OSF_project.assert_called_once_with('1234') # check that the project and the files have been accessed store = OSF_project.return_value.storages[0] assert store._name_mock.return_value == 'osfstorage' # should create a file in the same directory when no local