import pytest from .env import H2Conf, H2TestEnv @pytest.mark.skipif(condition=H2TestEnv.is_unsupported, reason="mod_http2 not supported here") class TestInterimResponses: @pytest.fixture(autouse=True, scope='class') def _class_scope(self, env): H2Conf(env).add_vhost_test1().add_vhost_cgi().install() assert env.apache_restart() == 0 def setup_method(self, method): print("setup_method: %s" % method.__name__) def teardown_method(self, method): print("teardown_method: %s" % method.__name__) # check that we normally do not see an interim response def test_h2_300_01(self, env): url = env.mkurl("https", "test1", "/index.html") r = env.curl_post_data(url, 'XYZ') assert r.response["status"] == 200 assert "previous" not in r.response # check that we see an interim response when we ask for it def test_h2_300_02(self, env): url = env.mkurl("https", "cgi", "/echo.py") r = env.curl_post_data(url, 'XYZ', options=["-H", "expect: 100-continue"]) assert r.response["status"] == 200 assert "previous" in r.response assert 100 == r.response["previous"]["status"] # check proper answer on unexpected def test_h2_300_03(self, env): url = env.mkurl("https", "cgi", "/echo.py") r = env.curl_post_data(url, 'XYZ', options=["-H", "expect: the-unexpected"]) assert 417 == r.response["status"] assert "previous" not in r.response