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()
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()