コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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)
コード例 #4
0
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)