def test_upload_create(self, provider, file_stream, native_file_metadata, empty_native_dataset_metadata, native_dataset_metadata): path = '/thefile.txt' url = provider.build_url(dvs.EDIT_MEDIA_BASE_URL, 'study', provider.doi) aiohttpretty.register_uri('POST', url, status=201) latest_url = provider.build_url(dvs.JSON_BASE_URL.format(provider._id, 'latest'), key=provider.token) latest_published_url = provider.build_url(dvs.JSON_BASE_URL.format(provider._id, 'latest-published'), key=provider.token) aiohttpretty.register_json_uri('GET', latest_published_url, body={'data': {'files': []}}) aiohttpretty.register_uri('GET', latest_url, responses=[ { 'status': 200, 'body': json.dumps(empty_native_dataset_metadata).encode('utf-8'), 'headers': {'Content-Type': 'application/json'}, }, { 'status': 200, 'body': json.dumps(native_dataset_metadata).encode('utf-8'), 'headers': {'Content-Type': 'application/json'}, }, ]) path = yield from provider.validate_path(path) metadata, created = yield from provider.upload(file_stream, path) entry = native_file_metadata['datafile'] expected = DataverseFileMetadata(entry, 'latest') assert created is True assert metadata == expected assert aiohttpretty.has_call(method='POST', uri=url) assert aiohttpretty.has_call(method='GET', uri=latest_url) assert aiohttpretty.has_call(method='GET', uri=latest_published_url)
def test_upload_updates(self, provider, file_stream, native_file_metadata, native_dataset_metadata): path = '/20' url = provider.build_url(dvs.EDIT_MEDIA_BASE_URL, 'study', provider.doi) aiohttpretty.register_uri('POST', url, status=201) published_url = provider.build_url(dvs.JSON_BASE_URL.format(provider._id, 'latest'), key=provider.token) aiohttpretty.register_json_uri('GET', published_url, status=200, body=native_dataset_metadata) delete_url = provider.build_url(dvs.EDIT_MEDIA_BASE_URL, 'file', '/20') # Old file id aiohttpretty.register_json_uri('DELETE', delete_url, status=204) latest_published_url = provider.build_url(dvs.JSON_BASE_URL.format(provider._id, 'latest-published'), key=provider.token) aiohttpretty.register_json_uri('GET', latest_published_url, body={'data': {'files': []}}) path = yield from provider.validate_path(path) metadata, created = yield from provider.upload(file_stream, path) entry = native_file_metadata['datafile'] expected = DataverseFileMetadata(entry, 'latest') assert metadata == expected assert created is False assert aiohttpretty.has_call(method='POST', uri=url) assert aiohttpretty.has_call(method='GET', uri=published_url)
def file_metadata_object(): with open( os.path.join(os.path.dirname(__file__), 'fixtures/root_provider.json'), 'r') as fp: return DataverseFileMetadata( json.load(fp)['native_file_metadata']['datafile'], 'latest')