diff options
author | Stefan Eissing <icing@apache.org> | 2023-03-04 13:40:38 +0000 |
---|---|---|
committer | Stefan Eissing <icing@apache.org> | 2023-03-04 13:40:38 +0000 |
commit | d73a6e1490418ce6955a768eb30b6efb7d7cdc08 (patch) | |
tree | 55e65caa524c488c8b0a4d35e71018309c527ef0 /test | |
parent | d7ac6428dbdcdf7684f2e928fc55cbea1ad56848 (diff) | |
download | httpd-d73a6e1490418ce6955a768eb30b6efb7d7cdc08.tar.gz |
Test case updates related to macOS ventura changes:
- python 3.11 deprecates the `cg` module, replacing
url query and multipart form-data handling with new code
- adaptions to changes in openssl/curl behaviours
- all mod_tls test cases now have prefix `test_tls_` for
easier scoping.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908060 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
30 files changed, 318 insertions, 186 deletions
diff --git a/test/modules/http1/htdocs/cgi/upload.py b/test/modules/http1/htdocs/cgi/upload.py index 7f599d27ef..7dfc8eabba 100755 --- a/test/modules/http1/htdocs/cgi/upload.py +++ b/test/modules/http1/htdocs/cgi/upload.py @@ -1,10 +1,9 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb +import os +import sys +import multipart +from urllib import parse -cgitb.enable() - -status = '200 Ok' try: # Windows needs stdio set for binary mode. import msvcrt @@ -14,31 +13,47 @@ try: # Windows needs stdio set for binary mode. except ImportError: pass -form = cgi.FieldStorage() + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() + +status = '200 Ok' # Test if the file was uploaded -if 'file' in form: - fileitem = form['file'] +if 'file' in files: + fitem = files['file'] # strip leading path from file name to avoid directory traversal attacks - fn = os.path.basename(fileitem.filename) - f = open(('%s/files/%s' % (os.environ["DOCUMENT_ROOT"], fn)), 'wb'); - f.write(fileitem.file.read()) - f.close() - message = "The file %s was uploaded successfully" % (fn) + fname = fitem.filename + fpath = f'{os.environ["DOCUMENT_ROOT"]}/files/{fname}' + fitem.save_as(fpath) + message = "The file %s was uploaded successfully" % (fname) print("Status: 201 Created") print("Content-Type: text/html") - print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fn)) + print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fname)) print("") print("<html><body><p>%s</p></body></html>" % (message)) -elif 'remove' in form: - remove = form['remove'].value +elif 'remove' in forms: + remove = forms['remove'] try: - fn = os.path.basename(remove) - os.remove('./files/' + fn) - message = 'The file "' + fn + '" was removed successfully' + fname = os.path.basename(remove) + os.remove('./files/' + fname) + message = 'The file "' + fname + '" was removed successfully' except OSError as e: - message = 'Error removing ' + fn + ': ' + e.strerror + message = 'Error removing ' + fname + ': ' + e.strerror status = '404 File Not Found' print("Status: %s" % (status)) print(""" diff --git a/test/modules/http2/htdocs/cgi/echo.py b/test/modules/http2/htdocs/cgi/echo.py index 58d811c42d..c9083e1d53 100644 --- a/test/modules/http2/htdocs/cgi/echo.py +++ b/test/modules/http2/htdocs/cgi/echo.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 -import sys, cgi, os +import os, sys +import multipart status = '200 Ok' diff --git a/test/modules/http2/htdocs/cgi/echohd.py b/test/modules/http2/htdocs/cgi/echohd.py index 371ae8b0f7..2a138cd844 100644 --- a/test/modules/http2/htdocs/cgi/echohd.py +++ b/test/modules/http2/htdocs/cgi/echohd.py @@ -1,11 +1,25 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb; cgitb.enable() +import os, sys +import multipart +from urllib import parse -status = '200 Ok' -form = cgi.FieldStorage() -name = form.getvalue('name') +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() +name = forms['name'] if 'name' in forms else None if name: print("Status: 200") diff --git a/test/modules/http2/htdocs/cgi/env.py b/test/modules/http2/htdocs/cgi/env.py index 5c9c0b1adb..3af576496a 100644 --- a/test/modules/http2/htdocs/cgi/env.py +++ b/test/modules/http2/htdocs/cgi/env.py @@ -1,28 +1,45 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb; cgitb.enable() +import os, sys +import multipart +from urllib import parse + + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() status = '200 Ok' try: - form = cgi.FieldStorage() - input = form['name'] + ename = forms['name'] # Test if the file was uploaded - if input.value is not None: - val = os.environ[input.value] if input.value in os.environ else "" + if ename is not None: + val = os.environ[ename] if ename in os.environ else "" print("Status: 200") print("""\ Content-Type: text/plain\n""") - print("{0}={1}".format(input.value, val)) + print(f"{ename}={val}") else: print("Status: 400 Parameter Missing") print("""\ Content-Type: text/html\n <html><body> - <p>No name was specified: %s</p> - </body></html>""" % (count.value)) + <p>No name was specified: name</p> + </body></html>""") except KeyError: print("Status: 200 Ok") diff --git a/test/modules/http2/htdocs/cgi/hecho.py b/test/modules/http2/htdocs/cgi/hecho.py index 5c1f79a302..fb9e330b60 100644 --- a/test/modules/http2/htdocs/cgi/hecho.py +++ b/test/modules/http2/htdocs/cgi/hecho.py @@ -1,18 +1,35 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb; cgitb.enable() +import os, sys +import multipart +from urllib import parse + + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() status = '200 Ok' try: - form = cgi.FieldStorage() - + # A nested FieldStorage instance holds the file - name = form['name'].value + name = forms['name'] value = '' try: - value = form['value'].value + value = forms['value'] except KeyError: value = os.environ.get("HTTP_"+name, "unset") diff --git a/test/modules/http2/htdocs/cgi/mnot164.py b/test/modules/http2/htdocs/cgi/mnot164.py index 0e5d107246..c29ccc185b 100644 --- a/test/modules/http2/htdocs/cgi/mnot164.py +++ b/test/modules/http2/htdocs/cgi/mnot164.py @@ -1,19 +1,26 @@ #!/usr/bin/env python3 +import os, sys +import multipart +from urllib import parse -import cgi -import cgitb; cgitb.enable() -import os -import sys -try: - form = cgi.FieldStorage() - count = form['count'].value - text = form['text'].value -except KeyError: - text="a" - count=77784 +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles -count = int(count) + +forms, files = get_request_params() +text = forms['text'] if 'text' in forms else "a" +count = int(forms['count']) if 'count' in forms else 77784 print("Status: 200 OK") print("Content-Type: text/html") diff --git a/test/modules/http2/htdocs/cgi/necho.py b/test/modules/http2/htdocs/cgi/necho.py index b9249b8969..78e2aad302 100644 --- a/test/modules/http2/htdocs/cgi/necho.py +++ b/test/modules/http2/htdocs/cgi/necho.py @@ -1,33 +1,49 @@ #!/usr/bin/env python3 -import cgi, os import time -import cgitb; cgitb.enable() +import os, sys +import multipart +from urllib import parse + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() status = '200 Ok' try: - form = cgi.FieldStorage() - count = form['count'] - text = form['text'] + count = forms['count'] + text = forms['text'] - waitsec = float(form['wait1'].value) if 'wait1' in form else 0.0 + waitsec = float(forms['wait1']) if 'wait1' in forms else 0.0 if waitsec > 0: time.sleep(waitsec) - if int(count.value): + if int(count): print("Status: 200") print("""\ Content-Type: text/plain\n""") - waitsec = float(form['wait2'].value) if 'wait2' in form else 0.0 + waitsec = float(forms['wait2']) if 'wait2' in forms else 0.0 if waitsec > 0: time.sleep(waitsec) i = 0; - for i in range(0, int(count.value)): - print("%s" % (text.value)) + for i in range(0, int(count)): + print("%s" % (text)) - waitsec = float(form['wait3'].value) if 'wait3' in form else 0.0 + waitsec = float(forms['wait3']) if 'wait3' in forms else 0.0 if waitsec > 0: time.sleep(waitsec) @@ -37,7 +53,7 @@ Content-Type: text/plain\n""") Content-Type: text/html\n <html><body> <p>No count was specified: %s</p> - </body></html>""" % (count.value)) + </body></html>""" % (count)) except KeyError: print("Status: 200 Ok") diff --git a/test/modules/http2/htdocs/cgi/upload.py b/test/modules/http2/htdocs/cgi/upload.py index 2c8d63aa10..59fbb5866d 100644 --- a/test/modules/http2/htdocs/cgi/upload.py +++ b/test/modules/http2/htdocs/cgi/upload.py @@ -1,42 +1,58 @@ #!/usr/bin/env python3 -import cgi, os -import cgitb -cgitb.enable() +import os +import sys +import multipart +from urllib import parse -status = '200 Ok' -try: # Windows needs stdio set for binary mode. +try: # Windows needs stdio set for binary mode. import msvcrt - msvcrt.setmode (0, os.O_BINARY) # stdin = 0 - msvcrt.setmode (1, os.O_BINARY) # stdout = 1 + + msvcrt.setmode(0, os.O_BINARY) # stdin = 0 + msvcrt.setmode(1, os.O_BINARY) # stdout = 1 except ImportError: pass -form = cgi.FieldStorage() +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() + +status = '200 Ok' # Test if the file was uploaded -if 'file' in form: - fileitem = form['file'] +if 'file' in files: + fitem = files['file'] # strip leading path from file name to avoid directory traversal attacks - fn = os.path.basename(fileitem.filename) - f = open(('%s/files/%s' % (os.environ["DOCUMENT_ROOT"], fn)), 'wb'); - f.write(fileitem.file.read()) - f.close() - message = "The file %s was uploaded successfully" % (fn) + fname = fitem.filename + fpath = f'{os.environ["DOCUMENT_ROOT"]}/files/{fname}' + fitem.save_as(fpath) + message = "The file %s was uploaded successfully" % (fname) print("Status: 201 Created") print("Content-Type: text/html") - print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fn)) + print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fname)) print("") print("<html><body><p>%s</p></body></html>" % (message)) - -elif 'remove' in form: - remove = form['remove'].value + +elif 'remove' in forms: + remove = forms['remove'] try: - fn = os.path.basename(remove) - os.remove('./files/' + fn) - message = 'The file "' + fn + '" was removed successfully' + fname = os.path.basename(remove) + os.remove('./files/' + fname) + message = 'The file "' + fname + '" was removed successfully' except OSError as e: - message = 'Error removing ' + fn + ': ' + e.strerror + message = 'Error removing ' + fname + ': ' + e.strerror status = '404 File Not Found' print("Status: %s" % (status)) print(""" diff --git a/test/modules/http2/test_004_post.py b/test/modules/http2/test_004_post.py index 97f05e252f..da1f96efa9 100644 --- a/test/modules/http2/test_004_post.py +++ b/test/modules/http2/test_004_post.py @@ -130,7 +130,7 @@ class TestPost: assert r2.response["status"] == 200 with open(self.local_src(fpath), mode='rb') as file: src = file.read() - assert src == r2.response["body"] + assert src == r2.response["body"], f'GET {r.response["header"]["location"]}' @pytest.mark.parametrize("name", [ "data-1k", "data-10k", "data-100k", "data-1m" diff --git a/test/modules/md/test_800_must_staple.py b/test/modules/md/test_800_must_staple.py index 06e881c2f1..32edee3393 100644 --- a/test/modules/md/test_800_must_staple.py +++ b/test/modules/md/test_800_must_staple.py @@ -47,7 +47,7 @@ class TestMustStaple: cert1 = MDCertUtil(env.store_domain_file(self.domain, 'pubcert.pem')) assert not cert1.get_must_staple() stat = env.get_ocsp_status(self.domain) - assert stat['ocsp'] == "no response sent" + assert 'ocsp' not in stat or stat['ocsp'] == "no response sent" # MD that must staple and toggle off again @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder") diff --git a/test/modules/tls/env.py b/test/modules/tls/env.py index 705192f351..a39fcaaa64 100644 --- a/test/modules/tls/env.py +++ b/test/modules/tls/env.py @@ -58,11 +58,14 @@ class TlsTestEnv(HttpdTestEnv): @classmethod def curl_supports_tls_1_3(cls) -> bool: if cls.CURL_SUPPORTS_TLS_1_3 is None: - p = subprocess.run(['curl', '--tlsv1.3', 'https://shouldneverexistreally'], - stderr=subprocess.PIPE, stdout=subprocess.PIPE) + # Unfortunately, there is no reliable, platform-independant + # way to verify that TLSv1.3 is properly supported by curl. + # + # p = subprocess.run(['curl', '--tlsv1.3', 'https://shouldneverexistreally'], + # stderr=subprocess.PIPE, stdout=subprocess.PIPE) # return code 6 means the site could not be resolved, but the # tls parameter was recognized - cls.CURL_SUPPORTS_TLS_1_3 = p.returncode == 6 + cls.CURL_SUPPORTS_TLS_1_3 = False return cls.CURL_SUPPORTS_TLS_1_3 diff --git a/test/modules/tls/htdocs/a.mod-tls.test/vars.py b/test/modules/tls/htdocs/a.mod-tls.test/vars.py index 4ab491b583..f41ec6a5e8 100755 --- a/test/modules/tls/htdocs/a.mod-tls.test/vars.py +++ b/test/modules/tls/htdocs/a.mod-tls.test/vars.py @@ -1,7 +1,25 @@ #!/usr/bin/env python3 import json -import os, cgi -import re +import os, sys +import multipart +from urllib import parse + + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() jenc = json.JSONEncoder() @@ -15,13 +33,7 @@ def get_json_var(name: str, def_val: str = ""): return jenc.encode(var) -name = None -try: - form = cgi.FieldStorage() - if 'name' in form: - name = str(form['name'].value) -except Exception: - pass +name = forms['name'] if 'name' in forms else None print("Content-Type: application/json\n") if name: diff --git a/test/modules/tls/htdocs/b.mod-tls.test/vars.py b/test/modules/tls/htdocs/b.mod-tls.test/vars.py index 9289c5cb09..f41ec6a5e8 100755 --- a/test/modules/tls/htdocs/b.mod-tls.test/vars.py +++ b/test/modules/tls/htdocs/b.mod-tls.test/vars.py @@ -1,6 +1,25 @@ #!/usr/bin/env python3 import json -import os, cgi +import os, sys +import multipart +from urllib import parse + + +def get_request_params(): + oforms = {} + if "REQUEST_URI" in os.environ: + qforms = parse.parse_qs(parse.urlsplit(os.environ["REQUEST_URI"]).query) + for name, values in qforms.items(): + oforms[name] = values[0] + myenv = os.environ.copy() + myenv['wsgi.input'] = sys.stdin.buffer + mforms, ofiles = multipart.parse_form_data(environ=myenv) + for name, item in mforms.items(): + oforms[name] = item + return oforms, ofiles + + +forms, files = get_request_params() jenc = json.JSONEncoder() @@ -14,13 +33,7 @@ def get_json_var(name: str, def_val: str = ""): return jenc.encode(var) -name = None -try: - form = cgi.FieldStorage() - if 'name' in form: - name = str(form['name'].value) -except Exception: - pass +name = forms['name'] if 'name' in forms else None print("Content-Type: application/json\n") if name: diff --git a/test/modules/tls/test_01_apache.py b/test/modules/tls/test_01_apache.py index eb9b32e199..cb6af6d461 100644 --- a/test/modules/tls/test_01_apache.py +++ b/test/modules/tls/test_01_apache.py @@ -10,5 +10,5 @@ class TestApache: TlsTestConf(env=env).install() assert env.apache_restart() == 0 - def test_01_apache_http(self, env): + def test_tls_01_apache_http(self, env): assert env.is_live(env.http_base_url) diff --git a/test/modules/tls/test_02_conf.py b/test/modules/tls/test_02_conf.py index f34b85e59e..4d6aa60200 100644 --- a/test/modules/tls/test_02_conf.py +++ b/test/modules/tls/test_02_conf.py @@ -18,25 +18,25 @@ class TestConf: if env.is_live(timeout=timedelta(milliseconds=100)): assert env.apache_stop() == 0 - def test_02_conf_cert_args_missing(self, env): + def test_tls_02_conf_cert_args_missing(self, env): conf = TlsTestConf(env=env) conf.add("TLSCertificate") conf.install() assert env.apache_fail() == 0 - def test_02_conf_cert_single_arg(self, env): + def test_tls_02_conf_cert_single_arg(self, env): conf = TlsTestConf(env=env) conf.add("TLSCertificate cert.pem") conf.install() assert env.apache_fail() == 0 - def test_02_conf_cert_file_missing(self, env): + def test_tls_02_conf_cert_file_missing(self, env): conf = TlsTestConf(env=env) conf.add("TLSCertificate cert.pem key.pem") conf.install() assert env.apache_fail() == 0 - def test_02_conf_cert_file_exist(self, env): + def test_tls_02_conf_cert_file_exist(self, env): conf = TlsTestConf(env=env) conf.add("TLSCertificate test-02-cert.pem test-02-key.pem") conf.install() @@ -45,13 +45,13 @@ class TestConf: fd.write("") assert env.apache_fail() == 0 - def test_02_conf_cert_listen_missing(self, env): + def test_tls_02_conf_cert_listen_missing(self, env): conf = TlsTestConf(env=env) conf.add("TLSEngine") conf.install() assert env.apache_fail() == 0 - def test_02_conf_cert_listen_wrong(self, env): + def test_tls_02_conf_cert_listen_wrong(self, env): conf = TlsTestConf(env=env) conf.add("TLSEngine ^^^^^") conf.install() @@ -62,20 +62,20 @@ class TestConf: "129.168.178.188:443", "[::]:443", ]) - def test_02_conf_cert_listen_valid(self, env, listen: str): + def test_tls_02_conf_cert_listen_valid(self, env, listen: str): conf = TlsTestConf(env=env) conf.add("TLSEngine {listen}".format(listen=listen)) conf.install() assert env.apache_restart() == 0 - def test_02_conf_cert_listen_cert(self, env): + def test_tls_02_conf_cert_listen_cert(self, env): domain = env.domain_a conf = TlsTestConf(env=env) conf.add_tls_vhosts(domains=[domain]) conf.install() assert env.apache_restart() == 0 - def test_02_conf_proto_wrong(self, env): + def test_tls_02_conf_proto_wrong(self, env): conf = TlsTestConf(env=env) conf.add("TLSProtocol wrong") conf.install() @@ -87,13 +87,13 @@ class TestConf: "TLSv1.3+", "TLSv0x0303+", ]) - def test_02_conf_proto_valid(self, env, proto): + def test_tls_02_conf_proto_valid(self, env, proto): conf = TlsTestConf(env=env) conf.add("TLSProtocol {proto}".format(proto=proto)) conf.install() assert env.apache_restart() == 0 - def test_02_conf_honor_wrong(self, env): + def test_tls_02_conf_honor_wrong(self, env): conf = TlsTestConf(env=env) conf.add("TLSHonorClientOrder wrong") conf.install() @@ -103,7 +103,7 @@ class TestConf: "on", "OfF", ]) - def test_02_conf_honor_valid(self, env, honor: str): + def test_tls_02_conf_honor_valid(self, env, honor: str): conf = TlsTestConf(env=env) conf.add("TLSHonorClientOrder {honor}".format(honor=honor)) conf.install() @@ -119,7 +119,7 @@ class TestConf: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\\ TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256""" ]) - def test_02_conf_cipher_valid(self, env, cipher): + def test_tls_02_conf_cipher_valid(self, env, cipher): conf = TlsTestConf(env=env) conf.add("TLSCiphersPrefer {cipher}".format(cipher=cipher)) conf.install() @@ -131,7 +131,7 @@ class TestConf: "TLS_NULL_WITH_NULL_NULLX", # not supported "TLS_DHE_RSA_WITH_AES128_GCM_SHA256", # not supported ]) - def test_02_conf_cipher_wrong(self, env, cipher): + def test_tls_02_conf_cipher_wrong(self, env, cipher): conf = TlsTestConf(env=env) conf.add("TLSCiphersPrefer {cipher}".format(cipher=cipher)) conf.install() diff --git a/test/modules/tls/test_03_sni.py b/test/modules/tls/test_03_sni.py index 2f11afc35b..cf421c0fe8 100644 --- a/test/modules/tls/test_03_sni.py +++ b/test/modules/tls/test_03_sni.py @@ -19,23 +19,23 @@ class TestSni: def _function_scope(self, env): pass - def test_03_sni_get_a(self, env): + def test_tls_03_sni_get_a(self, env): # do we see the correct json for the domain_a? data = env.tls_get_json(env.domain_a, "/index.json") assert data == {'domain': env.domain_a} - def test_03_sni_get_b(self, env): + def test_tls_03_sni_get_b(self, env): # do we see the correct json for the domain_a? data = env.tls_get_json(env.domain_b, "/index.json") assert data == {'domain': env.domain_b} - def test_03_sni_unknown(self, env): + def test_tls_03_sni_unknown(self, env): # connection will be denied as cert does not cover this domain domain_unknown = "unknown.test" r = env.tls_get(domain_unknown, "/index.json") assert r.exit_code != 0 - def test_03_sni_request_other_same_config(self, env): + def test_tls_03_sni_request_other_same_config(self, env): # do we see the first vhost response for another domain with different certs? r = env.tls_get(env.domain_a, "/index.json", options=[ "-vvvv", "--header", "Host: {0}".format(env.domain_b) @@ -45,7 +45,7 @@ class TestSni: assert r.json is None assert r.response['status'] == 421 - def test_03_sni_request_other_other_honor(self, env): + def test_tls_03_sni_request_other_other_honor(self, env): # do we see the first vhost response for an unknown domain? conf = TlsTestConf(env=env, extras={ env.domain_a: "TLSProtocol TLSv1.2+", @@ -61,7 +61,8 @@ class TestSni: assert r.exit_code == 0 assert r.json is None - def test_03_sni_bad_hostname(self, env): + @pytest.mark.skip('openssl behaviour changed on ventura, unreliable') + def test_tls_03_sni_bad_hostname(self, env): # curl checks hostnames we give it, but the openssl client # does not. Good for us, since we need to test it. r = env.openssl(["s_client", "-connect", diff --git a/test/modules/tls/test_04_get.py b/test/modules/tls/test_04_get.py index 6621f8aa24..4412a66d9a 100644 --- a/test/modules/tls/test_04_get.py +++ b/test/modules/tls/test_04_get.py @@ -39,7 +39,7 @@ class TestGet: ("1m.txt", 1000 * 1024), ("10m.txt", 10000 * 1024), ]) - def test_04_get(self, env, fname, flen): + def test_tls_04_get(self, env, fname, flen): # do we see the correct json for the domain_a? docs_a = os.path.join(env.server_docs_dir, env.domain_a) r = env.tls_get(env.domain_a, "/{0}".format(fname)) @@ -55,7 +55,7 @@ class TestGet: @pytest.mark.parametrize("fname, flen", [ ("1k.txt", 1024), ]) - def test_04_double_get(self, env, fname, flen): + def test_tls_04_double_get(self, env, fname, flen): # we'd like to check that we can do >1 requests on the same connection # however curl hides that from us, unless we analyze its verbose output docs_a = os.path.join(env.server_docs_dir, env.domain_a) diff --git a/test/modules/tls/test_05_proto.py b/test/modules/tls/test_05_proto.py index 6f4762cd26..447d052b42 100644 --- a/test/modules/tls/test_05_proto.py +++ b/test/modules/tls/test_05_proto.py @@ -30,26 +30,26 @@ class TestProto: def _function_scope(self, env): pass - def test_05_proto_1_2(self, env): + def test_tls_05_proto_1_2(self, env): r = env.tls_get(env.domain_b, "/index.json", options=["--tlsv1.2"]) assert r.exit_code == 0, r.stderr if TlsTestEnv.curl_supports_tls_1_3(): r = env.tls_get(env.domain_b, "/index.json", options=["--tlsv1.3"]) assert r.exit_code == 0, r.stderr - def test_05_proto_1_3(self, env): + def test_tls_05_proto_1_3(self, env): r = env.tls_get(env.domain_a, "/index.json", options=["--tlsv1.3"]) if TlsTestEnv.curl_supports_tls_1_3(): assert r.exit_code == 0, r.stderr else: assert r.exit_code == 4, r.stderr - def test_05_proto_close(self, env): + def test_tls_05_proto_close(self, env): s = socket.create_connection(('localhost', env.https_port)) time.sleep(0.1) s.close() - def test_05_proto_ssl_close(self, env): + def test_tls_05_proto_ssl_close(self, env): conf = TlsTestConf(env=env, extras={ 'base': "LogLevel ssl:debug", env.domain_a: "SSLProtocol TLSv1.3", diff --git a/test/modules/tls/test_06_ciphers.py b/test/modules/tls/test_06_ciphers.py index 650c0dabea..2e60bdd756 100644 --- a/test/modules/tls/test_06_ciphers.py +++ b/test/modules/tls/test_06_ciphers.py @@ -35,7 +35,7 @@ class TestCiphers: cipher = m.group(1) return protocol, cipher - def test_06_ciphers_ecdsa(self, env): + def test_tls_06_ciphers_ecdsa(self, env): ecdsa_1_2 = [c for c in env.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'ECDSA'][0] # client speaks only this cipher, see that it gets it @@ -46,7 +46,7 @@ class TestCiphers: assert protocol == "TLSv1.2", r.stdout assert cipher == ecdsa_1_2.openssl_name, r.stdout - def test_06_ciphers_rsa(self, env): + def test_tls_06_ciphers_rsa(self, env): rsa_1_2 = [c for c in env.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'RSA'][0] # client speaks only this cipher, see that it gets it @@ -62,7 +62,7 @@ class TestCiphers: ], ids=[ c.name for c in TlsTestEnv.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'ECDSA' ]) - def test_06_ciphers_server_prefer_ecdsa(self, env, cipher): + def test_tls_06_ciphers_server_prefer_ecdsa(self, env, cipher): # Select a ECSDA ciphers as preference and suppress all RSA ciphers. # The last is not strictly necessary since rustls prefers ECSDA anyway suppress_names = [c.name for c in env.RUSTLS_CIPHERS @@ -89,7 +89,7 @@ class TestCiphers: ], ids=[ c.name for c in TlsTestEnv.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'RSA' ]) - def test_06_ciphers_server_prefer_rsa(self, env, cipher): + def test_tls_06_ciphers_server_prefer_rsa(self, env, cipher): # Select a RSA ciphers as preference and suppress all ECDSA ciphers. # The last is necessary since rustls prefers ECSDA and openssl leaks that it can. suppress_names = [c.name for c in env.RUSTLS_CIPHERS @@ -116,7 +116,7 @@ class TestCiphers: ], ids=[ c.openssl_name for c in TlsTestEnv.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'RSA' ]) - def test_06_ciphers_server_prefer_rsa_alias(self, env, cipher): + def test_tls_06_ciphers_server_prefer_rsa_alias(self, env, cipher): # same as above, but using openssl names for ciphers suppress_names = [c.openssl_name for c in env.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'ECDSA'] @@ -142,7 +142,7 @@ class TestCiphers: ], ids=[ c.id_name for c in TlsTestEnv.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'RSA' ]) - def test_06_ciphers_server_prefer_rsa_id(self, env, cipher): + def test_tls_06_ciphers_server_prefer_rsa_id(self, env, cipher): # same as above, but using openssl names for ciphers suppress_names = [c.id_name for c in env.RUSTLS_CIPHERS if c.max_version == 1.2 and c.flavour == 'ECDSA'] @@ -161,7 +161,7 @@ class TestCiphers: assert client_proto == "TLSv1.2", r.stdout assert client_cipher == cipher.openssl_name, r.stdout - def test_06_ciphers_pref_unknown(self, env): + def test_tls_06_ciphers_pref_unknown(self, env): conf = TlsTestConf(env=env, extras={ env.domain_b: "TLSCiphersPrefer TLS_MY_SUPER_CIPHER:SSL_WHAT_NOT" }) @@ -174,7 +174,7 @@ class TestCiphers: conf.install() env.apache_restart() - def test_06_ciphers_pref_unsupported(self, env): + def test_tls_06_ciphers_pref_unsupported(self, env): # a warning on preferring a known, but not supported cipher env.httpd_error_log.ignore_recent() conf = TlsTestConf(env=env, extras={ @@ -187,7 +187,7 @@ class TestCiphers: assert errors == 0 assert warnings == 2 # once on dry run, once on start - def test_06_ciphers_supp_unknown(self, env): + def test_tls_06_ciphers_supp_unknown(self, env): conf = TlsTestConf(env=env, extras={ env.domain_b: "TLSCiphersSuppress TLS_MY_SUPER_CIPHER:SSL_WHAT_NOT" }) @@ -195,7 +195,7 @@ class TestCiphers: conf.install() assert env.apache_restart() != 0 - def test_06_ciphers_supp_unsupported(self, env): + def test_tls_06_ciphers_supp_unsupported(self, env): # no warnings on suppressing known, but not supported ciphers env.httpd_error_log.ignore_recent() conf = TlsTestConf(env=env, extras={ diff --git a/test/modules/tls/test_07_alpn.py b/test/modules/tls/test_07_alpn.py index 9f70f5f698..06aff3caae 100644 --- a/test/modules/tls/test_07_alpn.py +++ b/test/modules/tls/test_07_alpn.py @@ -23,19 +23,19 @@ class TestAlpn: def _get_protocol(self, output: str): for line in output.splitlines(): - m = re.match(r'^\*\s+ALPN, server accepted to use\s+(.*)$', line) + m = re.match(r'^\*\s+ALPN[:,] server accepted (to use\s+)?(.*)$', line) if m: - return m.group(1) + return m.group(2) return None - def test_07_alpn_get_a(self, env): + def test_tls_07_alpn_get_a(self, env): # do we see the correct json for the domain_a? - r = env.tls_get(env.domain_a, "/index.json", options=["-vvvvvv"]) + r = env.tls_get(env.domain_a, "/index.json", options=["-vvvvvv", "--http1.1"]) assert r.exit_code == 0, r.stderr protocol = self._get_protocol(r.stderr) assert protocol == "http/1.1", r.stderr - def test_07_alpn_get_b(self, env): + def test_tls_07_alpn_get_b(self, env): # do we see the correct json for the domain_a? r = env.tls_get(env.domain_b, "/index.json", options=["-vvvvvv"]) assert r.exit_code == 0, r.stderr diff --git a/test/modules/tls/test_08_vars.py b/test/modules/tls/test_08_vars.py index 4527213346..f1bd9b418a 100644 --- a/test/modules/tls/test_08_vars.py +++ b/test/modules/tls/test_08_vars.py @@ -20,7 +20,7 @@ class TestVars: conf.install() assert env.apache_restart() == 0 - def test_08_vars_root(self, env): + def test_tls_08_vars_root(self, env): # in domain_b root, the StdEnvVars is switch on exp_proto = "TLSv1.2" exp_cipher = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" @@ -44,7 +44,7 @@ class TestVars: ("SSL_CIPHER_EXPORT", "false"), ("SSL_CLIENT_VERIFY", "NONE"), ]) - def test_08_vars_const(self, env, name: str, value: str): + def test_tls_08_vars_const(self, env, name: str, value: str): r = env.tls_get(env.domain_b, f"/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout @@ -53,7 +53,7 @@ class TestVars: ("SSL_VERSION_INTERFACE", r'mod_tls/\d+\.\d+\.\d+'), ("SSL_VERSION_LIBRARY", r'rustls-ffi/\d+\.\d+\.\d+/rustls/\d+\.\d+\.\d+'), ]) - def test_08_vars_match(self, env, name: str, pattern: str): + def test_tls_08_vars_match(self, env, name: str, pattern: str): r = env.tls_get(env.domain_b, f"/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert name in r.json diff --git a/test/modules/tls/test_09_timeout.py b/test/modules/tls/test_09_timeout.py index 567f256291..70cc89417a 100644 --- a/test/modules/tls/test_09_timeout.py +++ b/test/modules/tls/test_09_timeout.py @@ -21,7 +21,7 @@ class TestTimeout: def _function_scope(self, env): pass - def test_09_timeout_handshake(self, env): + def test_tls_09_timeout_handshake(self, env): # in domain_b root, the StdEnvVars is switch on s = socket.create_connection(('localhost', env.https_port)) s.send(b'1234') diff --git a/test/modules/tls/test_10_session_id.py b/test/modules/tls/test_10_session_id.py index 1ac03e94b7..848bc1a556 100644 --- a/test/modules/tls/test_10_session_id.py +++ b/test/modules/tls/test_10_session_id.py @@ -25,7 +25,7 @@ class TestSessionID: ids.append(m.group(1)) return ids - def test_10_session_id_12(self, env): + def test_tls_10_session_id_12(self, env): r = env.openssl_client(env.domain_b, extra_args=[ "-reconnect", "-tls1_2" ]) @@ -37,7 +37,7 @@ class TestSessionID: @pytest.mark.skipif(True or not TlsTestEnv.openssl_supports_tls_1_3(), reason="openssl TLSv1.3 session storage test incomplete") - def test_10_session_id_13(self, env): + def test_tls_10_session_id_13(self, env): r = env.openssl_client(env.domain_b, extra_args=[ "-reconnect", "-tls1_3" ]) diff --git a/test/modules/tls/test_11_md.py b/test/modules/tls/test_11_md.py index de318c9e3a..9d733db9d1 100644 --- a/test/modules/tls/test_11_md.py +++ b/test/modules/tls/test_11_md.py @@ -17,17 +17,17 @@ class TestMD: conf.install() assert env.apache_restart() == 0 - def test_11_get_a(self, env): + def test_tls_11_get_a(self, env): # do we see the correct json for the domain_a? data = env.tls_get_json(env.domain_a, "/index.json") assert data == {'domain': env.domain_a} - def test_11_get_b(self, env): + def test_tls_11_get_b(self, env): # do we see the correct json for the domain_a? data = env.tls_get_json(env.domain_b, "/index.json") assert data == {'domain': env.domain_b} - def test_11_get_base(self, env): + def test_tls_11_get_base(self, env): # give the base server domain_a and lookup its index.json conf = TlsTestConf(env=env) conf.add_md_base(domain=env.domain_a) diff --git a/test/modules/tls/test_12_cauth.py b/test/modules/tls/test_12_cauth.py index 580df77383..14116091c6 100644 --- a/test/modules/tls/test_12_cauth.py +++ b/test/modules/tls/test_12_cauth.py @@ -45,7 +45,7 @@ class TestTLS: assert r.json, r.stderr + r.stdout return r.json[name] if name in r.json else None - def test_12_set_ca_non_existing(self, env): + def test_tls_12_set_ca_non_existing(self, env): conf = TlsTestConf(env=env, extras={ env.domain_a: "TLSClientCA xxx" }) @@ -53,7 +53,7 @@ class TestTLS: conf.install() assert env.apache_restart() == 1 - def test_12_set_ca_existing(self, env, cax_file): + def test_tls_12_set_ca_existing(self, env, cax_file): conf = TlsTestConf(env=env, extras={ env.domain_a: f"TLSClientCA {cax_file}" }) @@ -61,7 +61,7 @@ class TestTLS: conf.install() assert env.apache_restart() == 0 - def test_12_set_auth_no_ca(self, env): + def test_tls_12_set_auth_no_ca(self, env): conf = TlsTestConf(env=env, extras={ env.domain_a: "TLSClientCertificate required" }) @@ -70,7 +70,7 @@ class TestTLS: # will fail bc lacking clien CA assert env.apache_restart() == 1 - def test_12_auth_option_std(self, env, cax_file, clients_x): + def test_tls_12_auth_option_std(self, env, cax_file, clients_x): conf = TlsTestConf(env=env, extras={ env.domain_b: [ f"TLSClientCertificate required", @@ -102,7 +102,7 @@ class TestTLS: val = self.get_ssl_var(env, env.domain_b, ccert, "SSL_CLIENT_CERT") assert val == "" - def test_12_auth_option_cert(self, env, test_ca, cax_file, clients_x): + def test_tls_12_auth_option_cert(self, env, test_ca, cax_file, clients_x): conf = TlsTestConf(env=env, extras={ env.domain_b: [ "TLSClientCertificate required", @@ -124,7 +124,7 @@ class TestTLS: server_certs = test_ca.get_credentials_for_name(env.domain_b) assert val in [c.cert_pem.decode() for c in server_certs] - def test_12_auth_ssl_optional(self, env, cax_file, clients_x): + def test_tls_12_auth_ssl_optional(self, env, cax_file, clients_x): domain = env.domain_b conf = TlsTestConf(env=env, extras={ domain: [ @@ -164,7 +164,7 @@ class TestTLS: val = self.get_ssl_var(env, env.domain_b, ccert, "SSL_CLIENT_CERT") assert val == ccert.cert_pem.decode() - def test_12_auth_optional(self, env, cax_file, clients_x): + def test_tls_12_auth_optional(self, env, cax_file, clients_x): domain = env.domain_b conf = TlsTestConf(env=env, extras={ domain: [ @@ -197,7 +197,7 @@ class TestTLS: 'SSL_CLIENT_S_DN_CN': 'Not Implemented', }, r.stdout - def test_12_auth_expired(self, env, cax_file, clients_x): + def test_tls_12_auth_expired(self, env, cax_file, clients_x): conf = TlsTestConf(env=env, extras={ env.domain_b: [ "TLSClientCertificate required", @@ -213,7 +213,7 @@ class TestTLS: ]) assert r.exit_code != 0 - def test_12_auth_other_ca(self, env, cax_file, clients_y): + def test_tls_12_auth_other_ca(self, env, cax_file, clients_y): conf = TlsTestConf(env=env, extras={ env.domain_b: [ "TLSClientCertificate required", diff --git a/test/modules/tls/test_13_proxy.py b/test/modules/tls/test_13_proxy.py index affea9791d..8bd305f718 100644 --- a/test/modules/tls/test_13_proxy.py +++ b/test/modules/tls/test_13_proxy.py @@ -22,7 +22,7 @@ class TestProxy: conf.install() assert env.apache_restart() == 0 - def test_13_proxy_http_get(self, env): + def test_tls_13_proxy_http_get(self, env): data = env.tls_get_json(env.domain_b, "/proxy/index.json") assert data == {'domain': env.domain_b} @@ -34,7 +34,7 @@ class TestProxy: ("SSL_CIPHER_EXPORT", ""), ("SSL_CLIENT_VERIFY", ""), ]) - def test_13_proxy_http_vars(self, env, name: str, value: str): + def test_tls_13_proxy_http_vars(self, env, name: str, value: str): r = env.tls_get(env.domain_b, f"/proxy/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout diff --git a/test/modules/tls/test_14_proxy_ssl.py b/test/modules/tls/test_14_proxy_ssl.py index 18b7b0f1c3..79b2fb4b04 100644 --- a/test/modules/tls/test_14_proxy_ssl.py +++ b/test/modules/tls/test_14_proxy_ssl.py @@ -40,16 +40,16 @@ class TestProxySSL: conf.install() assert env.apache_restart() == 0 - def test_14_proxy_ssl_get(self, env): + def test_tls_14_proxy_ssl_get(self, env): data = env.tls_get_json(env.domain_b, "/proxy-ssl/index.json") assert data == {'domain': env.domain_b} - def test_14_proxy_ssl_get_local(self, env): + def test_tls_14_proxy_ssl_get_local(self, env): # does not work, since SSLProxy* not configured data = env.tls_get_json(env.domain_b, "/proxy-local/index.json") assert data is None - def test_14_proxy_ssl_h2_get(self, env): + def test_tls_14_proxy_ssl_h2_get(self, env): r = env.tls_get(env.domain_b, "/proxy-h2-ssl/index.json") assert r.exit_code == 0 assert r.json == {'domain': env.domain_b} @@ -62,7 +62,7 @@ class TestProxySSL: ("SSL_CIPHER_EXPORT", "false"), ("SSL_CLIENT_VERIFY", "NONE"), ]) - def test_14_proxy_ssl_vars_const(self, env, name: str, value: str): + def test_tls_14_proxy_ssl_vars_const(self, env, name: str, value: str): r = env.tls_get(env.domain_b, f"/proxy-ssl/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout @@ -71,7 +71,7 @@ class TestProxySSL: ("SSL_VERSION_INTERFACE", r'mod_tls/\d+\.\d+\.\d+'), ("SSL_VERSION_LIBRARY", r'rustls-ffi/\d+\.\d+\.\d+/rustls/\d+\.\d+\.\d+'), ]) - def test_14_proxy_ssl_vars_match(self, env, name: str, pattern: str): + def test_tls_14_proxy_ssl_vars_match(self, env, name: str, pattern: str): r = env.tls_get(env.domain_b, f"/proxy-ssl/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert name in r.json diff --git a/test/modules/tls/test_15_proxy_tls.py b/test/modules/tls/test_15_proxy_tls.py index 918d6a4907..f2f670d7e9 100644 --- a/test/modules/tls/test_15_proxy_tls.py +++ b/test/modules/tls/test_15_proxy_tls.py @@ -45,16 +45,16 @@ class TestProxyTLS: conf.install() assert env.apache_restart() == 0 - def test_15_proxy_tls_get(self, env): + def test_tls_15_proxy_tls_get(self, env): data = env.tls_get_json(env.domain_b, "/proxy-tls/index.json") assert data == {'domain': env.domain_b} - def test_15_proxy_tls_get_local(self, env): + def test_tls_15_proxy_tls_get_local(self, env): # does not work, since SSLProxy* not configured data = env.tls_get_json(env.domain_b, "/proxy-local/index.json") assert data is None - def test_15_proxy_tls_h2_get(self, env): + def test_tls_15_proxy_tls_h2_get(self, env): r = env.tls_get(env.domain_b, "/proxy-h2-tls/index.json") assert r.exit_code == 0 assert r.json == {'domain': env.domain_b}, f"{r.stdout}" @@ -69,7 +69,7 @@ class TestProxyTLS: ("SSL_CIPHER_EXPORT", "false"), ("SSL_CLIENT_VERIFY", "NONE"), ]) - def test_15_proxy_tls_h1_vars(self, env, name: str, value: str): + def test_tls_15_proxy_tls_h1_vars(self, env, name: str, value: str): r = env.tls_get(env.domain_b, f"/proxy-tls/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout @@ -80,7 +80,7 @@ class TestProxyTLS: ("SSL_CIPHER", "TLS_CHACHA20_POLY1305_SHA256"), ("SSL_SESSION_RESUMED", "Initial"), ]) - def test_15_proxy_tls_h2_vars(self, env, name: str, value: str): + def test_tls_15_proxy_tls_h2_vars(self, env, name: str, value: str): r = env.tls_get(env.domain_b, f"/proxy-h2-tls/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout diff --git a/test/modules/tls/test_16_proxy_mixed.py b/test/modules/tls/test_16_proxy_mixed.py index 11b8efe0de..ca082362d7 100644 --- a/test/modules/tls/test_16_proxy_mixed.py +++ b/test/modules/tls/test_16_proxy_mixed.py @@ -36,11 +36,11 @@ class TestProxyMixed: conf.install() assert env.apache_restart() == 0 - def test_16_proxy_mixed_ssl_get(self, env, repeat): + def test_tls_16_proxy_mixed_ssl_get(self, env, repeat): data = env.tls_get_json(env.domain_b, "/proxy-ssl/index.json") assert data == {'domain': env.domain_b} - def test_16_proxy_mixed_tls_get(self, env, repeat): + def test_tls_16_proxy_mixed_tls_get(self, env, repeat): data = env.tls_get_json(env.domain_a, "/proxy-tls/index.json") if data is None: time.sleep(300) diff --git a/test/modules/tls/test_17_proxy_machine_cert.py b/test/modules/tls/test_17_proxy_machine_cert.py index efaa15af57..7b5ef44d6f 100644 --- a/test/modules/tls/test_17_proxy_machine_cert.py +++ b/test/modules/tls/test_17_proxy_machine_cert.py @@ -54,7 +54,7 @@ class TestProxyMachineCert: conf.install() assert env.apache_restart() == 0 - def test_17_proxy_machine_cert_get_a(self, env): + def test_tls_17_proxy_machine_cert_get_a(self, env): data = env.tls_get_json(env.domain_a, "/proxy-tls/index.json") assert data == {'domain': env.domain_a} @@ -63,7 +63,7 @@ class TestProxyMachineCert: ("SSL_CLIENT_VERIFY", "SUCCESS"), ("REMOTE_USER", "user1"), ]) - def test_17_proxy_machine_cert_vars(self, env, name: str, value: str): + def test_tls_17_proxy_machine_cert_vars(self, env, name: str, value: str): r = env.tls_get(env.domain_a, f"/proxy-tls/vars.py?name={name}") assert r.exit_code == 0, r.stderr assert r.json == {name: value}, r.stdout |