import pytest
from .env import H2Conf, H2TestEnv
@pytest.mark.skipif(condition=H2TestEnv.is_unsupported, reason="mod_http2 not supported here" )
class TestProxyFwd:
@classmethod
def config_fwd_proxy(cls, env, h2_enabled=False ):
conf = H2Conf(env, extras={
'base' : [
f'Listen {env.proxy_port}' ,
'Protocols h2c http/1.1' ,
'LogLevel proxy_http2:trace2 proxy:trace2' ,
],
})
conf.add_vhost_cgi(proxy_self=False , h2proxy_self=False )
conf.start_vhost(domains=[f"test1.{env.http_tld}" ],
port=env.proxy_port, with_ssl=True )
conf.add([
'Protocols h2c http/1.1' ,
'ProxyRequests on' ,
f'H2ProxyRequests {"on" if h2_enabled else "off"}' ,
])
conf.end_vhost()
conf.install()
assert env.apache_restart() == 0
@pytest.fixture(autouse=True , scope='class' )
def _class_scope(cls, env):
cls.config_fwd_proxy(env)
# test the HTTP/1.1 setup working
def test_h2_503_01_proxy_fwd_h1(self, env):
url = f'http://localhost:{env.http_port}/hello.py '
proxy_host = f'test1.{env.http_tld}'
options = [
'--proxy' , f'https://{proxy_host}:{env.proxy_port} ' ,
'--resolve' , f'{proxy_host}:{env.proxy_port}:127.0.0.1' ,
'--proxy-cacert' , f'{env.get_ca_pem_file(proxy_host)}' ,
]
r = env.curl_get(url, 5, options=options)
assert r.exit_code == 0, f'{r}'
assert r.response['status' ] == 200
assert r.json['port' ] == f'{env.http_port}'
def test_h2_503_02_fwd_proxy_h2_off(self, env):
if not env.curl_is_at_least('8.1.0' ):
pytest.skip(f'need at least curl v8.1.0 for this' )
url = f'http://localhost:{env.http_port}/hello.py '
proxy_host = f'test1.{env.http_tld}'
options = [
'--proxy-http2' , '-v' ,
'--proxy' , f'https://{proxy_host}:{env.proxy_port} ' ,
'--resolve' , f'{proxy_host}:{env.proxy_port}:127.0.0.1' ,
'--proxy-cacert' , f'{env.get_ca_pem_file(proxy_host)}' ,
]
r = env.curl_get(url, 5, options=options)
assert r.exit_code == 0, f'{r}'
assert r.response['status' ] == 404
# test the HTTP/2 setup working
def test_h2_503_03_proxy_fwd_h2_on(self, env):
if not env.curl_is_at_least('8.1.0' ):
pytest.skip(f'need at least curl v8.1.0 for this' )
self.config_fwd_proxy(env, h2_enabled=True )
url = f'http://localhost:{env.http_port}/hello.py '
proxy_host = f'test1.{env.http_tld}'
options = [
'--proxy-http2' , '-v' ,
'--proxy' , f'https://{proxy_host}:{env.proxy_port} ' ,
'--resolve' , f'{proxy_host}:{env.proxy_port}:127.0.0.1' ,
'--proxy-cacert' , f'{env.get_ca_pem_file(proxy_host)}' ,
]
r = env.curl_get(url, 5, options=options)
assert r.exit_code == 0, f'{r}'
assert r.response['status' ] == 200
assert r.json['port' ] == f'{env.http_port}'
quality 100%
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.19Angebot
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
*Eine klare Vorstellung vom Zielzustand