def test_delete_unwritable(client, db, bucket, versions): """Test deleting a file which is not writable.""" obj = versions[0] # Unwritable file. obj.file.writable = False db.session.commit() # Delete specific version with patch('invenio_files_rest.views.remove_file_data') as task: resp = client.delete(url_for( 'invenio_files_rest.object_api', bucket_id=bucket.id, key=obj.key, versionId=obj.version_id), ) assert task.delay.called assert resp.status_code == 204 # Won't remove anything because file is not writable. FileInstance.query.count() == 4 remove_file_data(obj.file_id) FileInstance.query.count() == 4
def test_remove_file_data(app, db, dummy_location, versions): """Test remove file data.""" # Remove an object, so file instance have no references obj = versions[1] assert obj.is_head is False file_ = obj.file obj.remove() db.session.commit() # Remove the file instance - file not writable assert exists(file_.uri) assert FileInstance.query.count() == 4 remove_file_data(str(file_.id)) assert FileInstance.query.count() == 4 assert exists(file_.uri) # Remove the file instance - file is writable file_.writable = True db.session.commit() assert exists(file_.uri) assert FileInstance.query.count() == 4 remove_file_data(str(file_.id)) assert FileInstance.query.count() == 3 assert not exists(file_.uri) # Try to remove file instance with references. obj = versions[0] assert exists(obj.file.uri) assert FileInstance.query.count() == 3 remove_file_data(str(obj.file.id)) assert exists(obj.file.uri)