def test_explicit_etag(self): response = pretend.stub(last_modified=None, etag="foo", conditional_response=False, app_iter=iter([b"foo"])) handler = pretend.call_recorder(lambda request: response) request = pretend.stub() tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert response.conditional_response
def test_explicit_etag(self): response = pretend.stub( last_modified=None, etag="foo", conditional_response=False, ) handler = pretend.call_recorder(lambda request: response) request = pretend.stub() tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert response.conditional_response
def test_has_last_modified(self): response = pretend.stub( last_modified=pretend.stub(), etag=None, conditional_response=False, app_iter=iter([b"foo"]), ) handler = pretend.call_recorder(lambda request: response) request = pretend.stub() tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert response.conditional_response
def test_no_etag(self): response = pretend.stub( status_code=200, last_modified=None, etag=None, conditional_response=False, app_iter=iter([b"foo"]), content_length=None, ) handler = pretend.call_recorder(lambda request: response) request = pretend.stub(method="GET") tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert not response.conditional_response
def test_no_implicit_etag_wrong_method(self, method): response = pretend.stub( last_modified=None, etag=None, conditional_response=False, md5_etag=pretend.call_recorder(lambda: None), app_iter=[b"foo"], status_code=200, ) handler = pretend.call_recorder(lambda request: response) request = pretend.stub(method=method) tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert not response.conditional_response assert response.md5_etag.calls == []
def test_implicit_etag_buffers_streaming(self, method): response = pretend.stub( last_modified=None, etag=None, conditional_response=False, md5_etag=pretend.call_recorder(lambda: None), app_iter=iter([b"foo"]), body=b"foo", content_length=3, status_code=200, ) handler = pretend.call_recorder(lambda request: response) request = pretend.stub(method=method) tween = conditional_http_tween_factory(handler, pretend.stub()) assert tween(request) is response assert handler.calls == [pretend.call(request)] assert response.conditional_response assert response.md5_etag.calls == [pretend.call()]