1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
import pytest
from .env import H2Conf, H2TestEnv
@pytest.mark.skipif(condition=H2TestEnv.is_unsupported, reason="mod_http2 not supported here")
class TestRequire:
@pytest.fixture(autouse=True, scope='class')
def _class_scope(self, env):
domain = f"ssl.{env.http_tld}"
conf = H2Conf(env)
conf.start_vhost(domains=[domain], port=env.https_port)
conf.add("""
Protocols h2 http/1.1
SSLOptions +StdEnvVars
<Location /h2only.html>
Require expr \"%{HTTP2} == 'on'\"
</Location>
<Location /noh2.html>
Require expr \"%{HTTP2} == 'off'\"
</Location>""")
conf.end_vhost()
conf.install()
# the dir needs to exists for the configuration to have effect
env.mkpath(f"{env.server_dir}/htdocs/ssl-client-verify")
assert env.apache_restart() == 0
def test_h2_102_01(self, env):
url = env.mkurl("https", "ssl", "/h2only.html")
r = env.curl_get(url)
assert 0 == r.exit_code
assert r.response
assert 404 == r.response["status"]
def test_h2_102_02(self, env):
url = env.mkurl("https", "ssl", "/noh2.html")
r = env.curl_get(url)
assert 0 == r.exit_code
assert r.response
assert 403 == r.response["status"]
#
env.httpd_error_log.ignore_recent(
lognos = [
"AH01630" # client denied by server configuration
]
)
|