Exemple #1
0
    def test_etag_set_etag(self, app, schemas, etag_disabled):
        app.config['ETAG_DISABLED'] = etag_disabled
        blp = Blueprint('test', __name__)
        etag_schema = schemas.DocEtagSchema
        item = {'item_id': 1, 'db_field': 0}
        etag = blp._generate_etag(item)
        etag_with_schema = blp._generate_etag(item, etag_schema)

        with app.test_request_context('/'):
            blp.set_etag(item)
            if not etag_disabled:
                assert _get_etag_ctx()['etag'] == etag
                del _get_etag_ctx()['etag']
            else:
                assert 'etag' not in _get_etag_ctx()
        with app.test_request_context(
                '/', headers={'If-None-Match': etag}):
            if not etag_disabled:
                with pytest.raises(NotModified):
                    blp.set_etag(item)
            else:
                blp.set_etag(item)
                assert 'etag' not in _get_etag_ctx()
        with app.test_request_context(
                '/', headers={'If-None-Match': etag_with_schema}):
            if not etag_disabled:
                with pytest.raises(NotModified):
                    blp.set_etag(item, etag_schema)
            else:
                blp.set_etag(item, etag_schema)
                assert 'etag' not in _get_etag_ctx()
        with app.test_request_context(
                '/', headers={'If-None-Match': 'dummy'}):
            if not etag_disabled:
                blp.set_etag(item)
                assert _get_etag_ctx()['etag'] == etag
                del _get_etag_ctx()['etag']
                blp.set_etag(item, etag_schema)
                assert _get_etag_ctx()['etag'] == etag_with_schema
                del _get_etag_ctx()['etag']
            else:
                blp.set_etag(item)
                assert 'etag' not in _get_etag_ctx()
                blp.set_etag(item, etag_schema)
                assert 'etag' not in _get_etag_ctx()
Exemple #2
0
    def test_etag_set_etag(self, app, schemas):

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

        etag = _generate_etag(item)
        etag_with_schema = _generate_etag(item, etag_schema)

        with app.test_request_context('/'):
            set_etag(item)
            if is_etag_enabled(app):
                assert _get_etag_ctx()['etag'] == etag
                del _get_etag_ctx()['etag']
            else:
                assert 'etag' not in _get_etag_ctx()
            disable_etag_for_request()
            set_etag(item)
            assert 'etag' not in _get_etag_ctx()
        with app.test_request_context('/', headers={'If-None-Match': etag}):
            if is_etag_enabled(app):
                with pytest.raises(NotModified):
                    set_etag(item)
            else:
                set_etag(item)
                assert 'etag' not in _get_etag_ctx()
            disable_etag_for_request()
            set_etag(item)
            assert 'etag' not in _get_etag_ctx()
        with app.test_request_context(
                '/', headers={'If-None-Match': etag_with_schema}):
            if is_etag_enabled(app):
                with pytest.raises(NotModified):
                    set_etag(item, etag_schema)
            else:
                set_etag(item, etag_schema)
                assert 'etag' not in _get_etag_ctx()
            disable_etag_for_request()
            set_etag(item, etag_schema)
            assert 'etag' not in _get_etag_ctx()
        with app.test_request_context('/', headers={'If-None-Match': 'dummy'}):
            if is_etag_enabled(app):
                set_etag(item)
                assert _get_etag_ctx()['etag'] == etag
                del _get_etag_ctx()['etag']
                set_etag(item, etag_schema)
                assert _get_etag_ctx()['etag'] == etag_with_schema
                del _get_etag_ctx()['etag']
            else:
                set_etag(item)
                assert 'etag' not in _get_etag_ctx()
                set_etag(item, etag_schema)
                assert 'etag' not in _get_etag_ctx()
            disable_etag_for_request()
            set_etag(item)
            assert 'etag' not in _get_etag_ctx()
            set_etag(item, etag_schema)
            assert 'etag' not in _get_etag_ctx()