コード例 #1
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
    def test_etag_verify_check_etag_warning(self, app, method):

        old_item = {'item_id': 1, 'db_field': 0}
        old_etag = _generate_etag(old_item)

        with mock.patch.object(app.logger, 'warning') as mock_warning:
            with app.test_request_context('/',
                                          method=method,
                                          headers={'If-Match': old_etag}):
                verify_check_etag()
                if (is_etag_enabled(app)
                        and method in ['PUT', 'PATCH', 'DELETE']):
                    assert mock_warning.called
                    mock_warning.reset_mock()
                else:
                    assert not mock_warning.called
                check_etag(old_item)
                verify_check_etag()
                assert not mock_warning.called
                disable_etag_for_request()
                verify_check_etag()
                assert not mock_warning.called
                check_etag(old_item)
                verify_check_etag()
                assert not mock_warning.called
コード例 #2
0
 def put(self, new_item, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action, no shema used
     check_etag(item['db_field'])
     new_item = collection.put(item_id, new_item)
     # Compute ETag using arbitrary data and no schema
     set_etag(new_item['db_field'])
     return new_item
コード例 #3
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
 def delete(self, item_id):
     item = self._get_item(item_id)
     check_etag(item, DocEtagSchema)
     del collection.items[collection.items.index(item)]
コード例 #4
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
 def put(self, new_item, item_id):
     item = self._get_item(item_id)
     check_etag(item, DocEtagSchema)
     return collection.put(item_id, new_item)
コード例 #5
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
    def test_etag_check_etag(self, app, schemas):

        etag_schema = schemas.DocEtagSchema
        old_item = {'item_id': 1, 'db_field': 0}
        new_item = {'item_id': 1, 'db_field': 1}

        old_etag = _generate_etag(old_item)
        old_etag_with_schema = _generate_etag(old_item, etag_schema)

        with app.test_request_context('/', headers={'If-Match': old_etag}):
            check_etag(old_item)
            if is_etag_enabled(app):
                with pytest.raises(PreconditionFailed):
                    check_etag(new_item)
            else:
                check_etag(new_item)
            disable_etag_for_request()
            check_etag(old_item)
            check_etag(new_item)
        with app.test_request_context(
                '/', headers={'If-Match': old_etag_with_schema}):
            check_etag(old_item, etag_schema)
            if is_etag_enabled(app):
                with pytest.raises(PreconditionFailed):
                    check_etag(new_item, etag_schema)
            else:
                check_etag(new_item)
            disable_etag_for_request()
            check_etag(old_item)
            check_etag(new_item)
コード例 #6
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
 def delete_resource(item_id):
     item = _get_item(item_id)
     check_etag(item)
     del collection.items[collection.items.index(item)]
コード例 #7
0
ファイル: test_etag.py プロジェクト: xen/flask-rest-api
 def put_resource(new_item, item_id):
     item = _get_item(item_id)
     check_etag(item)
     return collection.put(item_id, new_item)
コード例 #8
0
 def delete(self, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action and schema must be provided
     check_etag(item, DocSchema)
     collection.delete(item_id)
コード例 #9
0
 def put(self, new_item, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action and schema must be provided
     check_etag(item, DocSchema)
     return collection.put(item_id, new_item)
コード例 #10
0
 def delete(self, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action, no shema used
     check_etag(item['db_field'])
     collection.delete(item_id)
コード例 #11
0
 def delete(self, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action, ETag schema is used
     check_etag(item)
     collection.delete(item_id)
コード例 #12
0
 def put(self, new_item, item_id):
     item = self._get_item(item_id)
     # Check ETag is a manual action, ETag schema is used
     check_etag(item)
     new_item = collection.put(item_id, new_item)
     return new_item