Exemplo n.º 1
0
    async def test_etag_set_etag_in_response(self, app, schemas, paginate):
        blp = Blueprint('test', __name__)
        etag_schema = schemas.DocEtagSchema
        item = {'item_id': 1, 'db_field': 0}
        if paginate:
            extra_data = (('X-Pagination', 'Dummy pagination header'), )
        else:
            extra_data = tuple()
        etag = blp._generate_etag(item, extra_data=extra_data)
        etag_with_schema = blp._generate_etag(item,
                                              etag_schema,
                                              extra_data=extra_data)

        async with app.test_request_context('/'):
            resp = Response([])
            if extra_data:
                resp.headers['X-Pagination'] = 'Dummy pagination header'
            get_appcontext()['result_dump'] = item
            blp._set_etag_in_response(resp, None)
            assert resp.get_etag() == (etag, False)

        async with app.test_request_context('/'):
            resp = Response([])
            if extra_data:
                resp.headers['X-Pagination'] = 'Dummy pagination header'
            get_appcontext()['result_raw'] = item
            blp._set_etag_in_response(resp, etag_schema)
            assert resp.get_etag() == (etag_with_schema, False)
Exemplo n.º 2
0
    async def test_etag_duplicate_header(self, app):
        """Check duplicate header results in a different ETag"""
        class CustomBlueprint(Blueprint):
            ETAG_INCLUDE_HEADERS = Blueprint.ETAG_INCLUDE_HEADERS + ['X-test']

        blp = CustomBlueprint('test', __name__, url_prefix='/test')

        async with app.test_request_context('/'):
            resp = Response("Test")
            resp.headers.add('X-test', 'Test')
            get_appcontext()['result_dump'] = {}
            blp._set_etag_in_response(resp, None)
            etag_1 = resp.get_etag()

        async with app.test_request_context('/'):
            resp = Response("Test")
            resp.headers.add('X-test', 'Test')
            resp.headers.add('X-test', 'Test')
            get_appcontext()['result_dump'] = {}
            blp._set_etag_in_response(resp, None)
            etag_2 = resp.get_etag()

        assert etag_1 != etag_2