def test_long_format_list_with_null(capsys): args = MockArgs(project='f3szh', long_format=True) dates = ['null', 'null'] njson = fake_responses._build_node('nodes') fjson = fake_responses.files_node('f3szh', 'osfstorage', file_names=['hello.txt', 'bye.txt'], file_sizes=['null', 'null'], file_dates_modified=dates) sjson = fake_responses.storage_node('f3szh', ['osfstorage']) def simple_OSFCore_get(url): if url == 'https://api.osf.io/v2//nodes/f3szh/': return FakeResponse(200, njson) elif url == 'https://api.osf.io/v2/nodes/f3szh/files/': return FakeResponse(200, sjson) elif url == 'https://api.osf.io/v2/nodes/f3szh/files/osfstorage/': return FakeResponse(200, fjson) elif url == 'https://api.osf.io/v2//guids/f3szh/': return FakeResponse(200, {'data': {'type': 'nodes'}}) else: print(url) raise ValueError() with patch('osfclient.cli.get_localzone', return_value=tz.tzutc()) as mock_get_localzone: with patch.object(OSFCore, '_get', side_effect=simple_OSFCore_get) as mock_osf_get: list_(args) captured = capsys.readouterr() assert captured.err == '' expected = ['- - - osfstorage/bye.txt', '- - - osfstorage/hello.txt', ''] assert captured.out.split('\n') == expected
def test_pass_down_session_to_storages(OSFCore_get): # as previous test but for multiple storages project = Project({}) project._storages_url = 'https://api.osf.io/v2//nodes/f3szh/files/' store_json = fake_responses.storage_node('f3szh') response = FakeResponse(200, store_json) OSFCore_get.return_value = response for store in project.storages: assert store.session == project.session
def test_pass_down_session_to_storage(OSFCore_get): # check that `self.session` is passed to newly created OSFCore instances project = Project({}) project._storages_url = 'https://api.osf.io/v2//nodes/f3szh/files/' store_json = fake_responses.storage_node('f3szh') response = FakeResponse(200, store_json) OSFCore_get.return_value = response store = project.storage() assert store.session == project.session
def test_valid_storage(OSFCore_get): project = Project({}) project._storages_url = 'https://api.osf.io/v2//nodes/f3szh/files/' response = FakeResponse(200, fake_responses.storage_node('f3szh')) OSFCore_get.return_value = response storage = project.storage('osfstorage') OSFCore_get.assert_called_once_with( 'https://api.osf.io/v2//nodes/f3szh/files/') assert isinstance(storage, Storage)
def test_invalid_storage(OSFCore_get): project = Project({}) project._storages_url = 'https://api.osf.io/v2//nodes/f3szh/files/' response = FakeResponse(200, fake_responses.storage_node('f3szh')) OSFCore_get.return_value = response with pytest.raises(RuntimeError): project.storage('does-not-exist') OSFCore_get.assert_called_once_with( 'https://api.osf.io/v2//nodes/f3szh/files/')
def test_iterate_storages(OSFCore_get): project = Project({}) project._storages_url = 'https://api.osf.io/v2//nodes/f3szh/files/' store_json = fake_responses.storage_node('f3szh', ['osfstorage', 'github']) response = FakeResponse(200, store_json) OSFCore_get.return_value = response stores = list(project.storages) assert len(stores) == 2 for store in stores: assert isinstance(store, Storage) OSFCore_get.assert_called_once_with( 'https://api.osf.io/v2//nodes/f3szh/files/')
def test_list(capsys): args = MockArgs(project='f3szh') njson = fake_responses._build_node('nodes') rjson = fake_responses.files_node('f3szh', 'osfstorage', file_names=['hello.txt', 'bye.txt'], folder_names=['folder1', 'folder2']) fjson1 = fake_responses.files_node( 'f3szh', 'osfstorage', file_names=['folder1/folder1content.txt']) fjson2 = fake_responses.files_node( 'f3szh', 'osfstorage', file_names=['folder2/folder2content.txt']) sjson = fake_responses.storage_node('f3szh', ['osfstorage']) def simple_OSFCore_get(url): if url == 'https://api.osf.io/v2//nodes/f3szh/': return FakeResponse(200, njson) elif url == 'https://api.osf.io/v2/nodes/f3szh/files/': return FakeResponse(200, sjson) elif url == 'https://api.osf.io/v2/nodes/f3szh/files/osfstorage/': return FakeResponse(200, rjson) elif url == 'https://api.osf.io/v2/nodes/9zpcy/files/osfstorage/folder1123/': return FakeResponse(200, fjson1) elif url == 'https://api.osf.io/v2/nodes/9zpcy/files/osfstorage/folder2123/': return FakeResponse(200, fjson2) elif url == 'https://api.osf.io/v2//guids/f3szh/': return FakeResponse(200, {'data': {'type': 'nodes'}}) else: print(url) raise ValueError() with patch.object(OSFCore, '_get', side_effect=simple_OSFCore_get) as mock_osf_get: list_(args) captured = capsys.readouterr() assert captured.err == '' assert captured.out.split('\n') == [ 'osfstorage/folder2/folder2content.txt', 'osfstorage/folder1/folder1content.txt', 'osfstorage/bye.txt', 'osfstorage/hello.txt', '' ]
def test_sublist_empty(capsys): args = MockArgs(project='f3szh', base_path='googledrive/') njson = fake_responses._build_node('nodes') sjson = fake_responses.storage_node('f3szh', ['osfstorage']) def simple_OSFCore_get(url): if url == 'https://api.osf.io/v2//nodes/f3szh/': return FakeResponse(200, njson) elif url == 'https://api.osf.io/v2/nodes/f3szh/files/': return FakeResponse(200, sjson) elif url == 'https://api.osf.io/v2//guids/f3szh/': return FakeResponse(200, {'data': {'type': 'nodes'}}) else: print(url) raise ValueError() with patch.object(OSFCore, '_get', side_effect=simple_OSFCore_get) as mock_osf_get: list_(args) captured = capsys.readouterr() assert captured.err == '' assert captured.out.split('\n') == ['']