def test_it_creates_a_new_remote_project(mk_mock_kiproject_input, mk_tempdir, syn_test_helper): mk_mock_kiproject_input(create_remote_project_or_existing='c') kiproject = KiProject(mk_tempdir()) syn_project = syn_test_helper.client().get( DataUri.parse(kiproject.project_uri).id) syn_test_helper.dispose_of(syn_project)
def test___init__(bad_uris): for scheme in DataUri.SCHEMES: id = '123456' uri = '{0}:{1}'.format(scheme, id).title() duri = DataUri.parse(uri) assert duri.scheme == scheme assert duri.id == id assert duri.uri == uri.lower() if scheme == 'syn': assert isinstance(duri.data_adapter(), SynapseAdapter) with pytest.raises(InvalidDataUriError) as ex: DataUri.parse(None) assert str(ex.value) == 'uri cannot be blank.' for bad_uri in bad_uris: with pytest.raises(InvalidDataUriError) as ex: DataUri.parse(bad_uri) assert ('Invalid URI format, cannot parse:' in str(ex.value) or str(ex.value) == 'uri cannot be blank.' or 'Invalid URI scheme:' in str(ex.value) or str(ex.value) == 'URI ID must be provided.')
def test_it_does_not_push_a_file_unless_the_local_file_changed( mk_kiproject, mk_syn_files, syn_client, mocker): kiproject = mk_kiproject() # Get the Synapse project for the KiProject syn_project = syn_client.get(DataUri.parse(kiproject.project_uri).id) syn_data_folder = syn_client.store( synapseclient.Folder(name='data', parent=syn_project)) syn_core_folder = syn_client.store( synapseclient.Folder(name='core', parent=syn_data_folder)) # Create a Synapse file to add/pull/push syn_file = mk_syn_files(syn_core_folder, file_num=1, versions=1, suffix='')[0] syn_file_uri = DataUri('syn', syn_file.id).uri kiproject.data_add(syn_file_uri, data_type=kiproject.data_types[0]) kiproject.data_pull() # The file exists in the Synapse project and has been pulled locally. # Pushing again should NOT upload the file again. mocker.spy(synapseclient.client, 'upload_file_handle') kiproject.data_push(syn_file_uri)
def _sdo(kiproject): syn_project = syn_test_helper.client().get( DataUri.parse(kiproject.project_uri).id) syn_test_helper.dispose_of(syn_project) return syn_project