You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2025/02/05 12:41:53 UTC
svn commit: r1923593 [2/3] - in /httpd/httpd/branches/2.4.x: changes-entries/ modules/md/ test/modules/md/ test/modules/md/pebble/
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_502_acmev2_drive.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_502_acmev2_drive.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_502_acmev2_drive.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_502_acmev2_drive.py Wed Feb 5 12:41:51 2025
@@ -25,7 +25,7 @@ class TestDrivev2:
env.check_acme()
env.APACHE_CONF_SRC = "data/test_drive"
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -76,7 +76,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive
prev_md = env.a2md(["list", name]).json['output'][0]
r = env.a2md(["-vv", "drive", "-c", "http-01", name])
@@ -117,7 +117,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name, "test." + domain])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive
r = env.a2md(["-vv", "drive", "-c", "http-01", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
@@ -132,7 +132,7 @@ class TestDrivev2:
name = "www." + domain
assert env.a2md(["add", name]).exit_code == 0
assert env.a2md(["update", name, "contacts", "admin@" + domain]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: create account on server
r = env.a2md(["-t", "accepted", "acme", "newreg", "admin@" + domain], raw=True)
assert r.exit_code == 0
@@ -152,7 +152,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: create account on server
r = env.a2md(["-t", "accepted", "acme", "newreg", "test@" + domain], raw=True)
assert r.exit_code == 0
@@ -172,7 +172,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive
r = env.a2md(["-vv", "drive", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
@@ -204,7 +204,7 @@ class TestDrivev2:
conf = MDConf(env, proxy=True)
conf.add('LogLevel proxy:trace8')
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive it, with wrong proxy url -> FAIL
r = env.a2md(["-p", "http://localhost:1", "drive", name])
@@ -231,11 +231,11 @@ class TestDrivev2:
# setup: create resource files
self._write_res_file(os.path.join(env.server_docs_dir, "test"), "name.txt", name)
self._write_res_file(os.path.join(env.server_docs_dir), "name.txt", "not-forbidden.org")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive it
assert env.a2md(["drive", name]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# test HTTP access - no redirect
jdata = env.get_json_content(f"test1.{env.http_tld}", "/alive.json", use_https=False)
assert jdata['host']== "test1"
@@ -249,7 +249,7 @@ class TestDrivev2:
# test HTTP access again -> redirect to default HTTPS port
conf.add("MDRequireHttps temporary")
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
r = env.get_meta(name, "/name.txt", use_https=False)
assert r.response['status'] == 302
exp_location = "https://%s/name.txt" % name
@@ -266,7 +266,7 @@ class TestDrivev2:
# test HTTP access again -> redirect permanent
conf.add("MDRequireHttps permanent")
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
r = env.get_meta(name, "/name.txt", use_https=False)
assert r.response['status'] == 301
exp_location = "https://%s/name.txt" % name
@@ -288,15 +288,15 @@ class TestDrivev2:
conf.add_vhost(name, port=env.http_port)
conf.add_vhost(name)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive it
assert env.a2md(["drive", name]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# test override HSTS header
conf.add('Header set Strict-Transport-Security "max-age=10886400; includeSubDomains; preload"')
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
r = env.get_meta(name, "/name.txt", use_https=True)
assert 'strict-transport-security' in r.response['header'], r.response['header']
assert r.response['header']['strict-transport-security'] == \
@@ -306,7 +306,7 @@ class TestDrivev2:
conf.add(' Redirect /a /name.txt')
conf.add(' Redirect seeother /b /name.txt')
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# check: default redirect by mod_md still works
exp_location = "https://%s/name.txt" % name
r = env.get_meta(name, "/name.txt", use_https=False)
@@ -330,17 +330,17 @@ class TestDrivev2:
conf.add_vhost(name, port=env.http_port)
conf.add_vhost(name)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# drive it
r = env.a2md(["-v", "drive", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: place redirect rules
conf.add(' Redirect /a /name.txt')
conf.add(' Redirect seeother /b /name.txt')
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# check: redirects on HTTP
exp_location = "http://%s:%s/name.txt" % (name, env.http_port)
r = env.get_meta(name, "/a", use_https=False)
@@ -367,12 +367,12 @@ class TestDrivev2:
conf.add_md([name])
conf.add_vhost(name)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.run(["openssl", "s_client",
f"-connect", "localhost:{env.https_port}",
"-servername", "example.com", "-crlf"
], intext="GET https:// HTTP/1.1\nHost: example.com\n\n")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# --------- critical state change -> drive again ---------
@@ -382,7 +382,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: drive it
r = env.a2md(["drive", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
@@ -419,7 +419,7 @@ class TestDrivev2:
conf.add_renew_window(renew_window)
conf.add_md([name])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.a2md(["list", name]).json['output'][0]['state'] == env.MD_S_INCOMPLETE
# setup: drive it
r = env.a2md(["drive", name])
@@ -457,7 +457,7 @@ class TestDrivev2:
conf.add_private_key(key_type, key_params)
conf.add_md([name])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.a2md(["list", name]).json['output'][0]['state'] == env.MD_S_INCOMPLETE
# setup: drive it
r = env.a2md(["-vv", "drive", name])
@@ -477,7 +477,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name, "test." + domain, "xxx." + domain])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: drive it
r = env.a2md(["drive", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
@@ -496,7 +496,7 @@ class TestDrivev2:
domain = self.test_domain
name = "www." + domain
self._prepare_md(env, [name])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# setup: drive it
r = env.a2md(["drive", name])
assert r.exit_code == 0, "a2md drive failed: {0}".format(r.stderr)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_602_roundtrip.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_602_roundtrip.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_602_roundtrip.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_602_roundtrip.py Wed Feb 5 12:41:51 2025
@@ -39,16 +39,16 @@ class TestRoundtripv2:
conf.add_md(domains)
conf.install()
# - restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# - drive
assert env.a2md(["-v", "drive", domain]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain)
# - append vhost to config
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# check: SSL is running OK
cert = env.get_cert(domain)
assert domain in cert.get_san_list()
@@ -71,14 +71,14 @@ class TestRoundtripv2:
conf.install()
# - restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains_a)
env.check_md(domains_b)
# - drive
assert env.a2md(["drive", domain_a]).exit_code == 0
assert env.a2md(["drive", domain_b]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain_a)
env.check_md_complete(domain_b)
@@ -88,7 +88,7 @@ class TestRoundtripv2:
conf.install()
# check: SSL is running OK
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
cert_a = env.get_cert(domain_a)
assert domains_a == cert_a.get_san_list()
cert_b = env.get_cert(domain_b)
@@ -108,12 +108,12 @@ class TestRoundtripv2:
conf.install()
# - restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# - drive
assert env.a2md(["drive", domain]).exit_code == 0
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain)
# - append vhost to config
@@ -126,7 +126,7 @@ class TestRoundtripv2:
self._write_res_file(os.path.join(env.server_docs_dir, "b"), "name.txt", name_b)
# check: SSL is running OK
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
cert_a = env.get_cert(name_a)
assert name_a in cert_a.get_san_list()
cert_b = env.get_cert(name_b)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_702_auto.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_702_auto.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_702_auto.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_702_auto.py Wed Feb 5 12:41:51 2025
@@ -1,4 +1,5 @@
import os
+import time
from datetime import timedelta
import pytest
@@ -21,7 +22,7 @@ class TestAutov2:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -44,7 +45,7 @@ class TestAutov2:
conf.install()
#
# restart, check that MD is synched to store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
stat = env.get_md_status(domain)
assert stat["watched"] == 0
@@ -52,7 +53,7 @@ class TestAutov2:
# add vhost for MD, restart should drive it
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
env.check_md_complete(domain)
stat = env.get_md_status(domain)
@@ -89,7 +90,7 @@ class TestAutov2:
conf.install()
#
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains_a)
env.check_md(domains_b)
#
@@ -106,7 +107,7 @@ class TestAutov2:
assert status['state-descr'] == "certificate(rsa) is missing"
# restart and activate
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# check: SSL is running OK
cert_a = env.get_cert(domain_a)
assert domains_a == cert_a.get_san_list()
@@ -136,7 +137,7 @@ class TestAutov2:
self._write_res_file(os.path.join(env.server_docs_dir, "b"), "name.txt", name_b)
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([domain])
md = env.check_md_complete(domain)
@@ -170,7 +171,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([domain])
env.check_md_complete(domain)
@@ -196,7 +197,7 @@ class TestAutov2:
self._write_res_file(os.path.join(env.server_docs_dir, "a"), "name.txt", name_a)
#
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
#
# check: that request to domains give 503 Service Unavailable
@@ -227,7 +228,7 @@ class TestAutov2:
self._write_res_file(os.path.join(env.server_docs_dir, "a"), "name.txt", name_a)
#
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
md = env.await_error(domain)
@@ -262,7 +263,7 @@ class TestAutov2:
conf.install()
#
# - restart (-> drive)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# await drive completion
md = env.await_error(domain)
assert md
@@ -291,9 +292,9 @@ class TestAutov2:
conf.install()
#
# - restart (-> drive), check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain)
# Force cert renewal due to critical remaining valid duration
@@ -311,30 +312,23 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that md+cert is in store, TLS is up
- assert env.apache_restart() == 0
- assert env.await_completion([domain])
- env.check_md_complete(domain)
- cert1 = MDCertUtil(env.store_domain_file(domain, 'pubcert.pem'))
- # compare with what md reports as status
- stat = env.get_certificate_status(domain)
- assert cert1.same_serial_as(stat['rsa']['serial'])
- #
- # create self-signed cert, with critical remaining valid duration -> drive again
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ assert env.await_completion([domain], restart=False)
+ # Overwrite stages cert with one which has little remaining lifetime
creds = env.create_self_signed_cert(CertificateSpec(domains=[domain]),
valid_from=timedelta(days=-120),
valid_to=timedelta(days=2),
serial=7029)
- creds.save_cert_pem(env.store_domain_file(domain, 'pubcert.pem'))
- creds.save_pkey_pem(env.store_domain_file(domain, 'privkey.pem'))
assert creds.certificate.serial_number == 7029
- assert env.apache_restart() == 0
+ creds.save_cert_pem(env.store_staged_file(domain, 'pubcert.pem'))
+ creds.save_pkey_pem(env.store_staged_file(domain, 'privkey.pem'))
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_certificate_status(domain)
assert creds.certificate.serial_number == int(stat['rsa']['serial'], 16)
- #
# cert should renew and be different afterwards
assert env.await_completion([domain], must_renew=True)
stat = env.get_certificate_status(domain)
- creds.certificate.serial_number != int(stat['rsa']['serial'], 16)
+ assert creds.certificate.serial_number != int(stat['rsa']['serial'], 16)
# test case: drive with an unsupported challenge due to port availability
def test_md_702_010(self, env):
@@ -348,7 +342,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md["renewal"]["errors"] > 0
#
@@ -360,7 +354,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([domain])
#
@@ -386,7 +380,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md["renewal"]["errors"] > 0
#
@@ -399,7 +393,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([domain])
#
@@ -431,7 +425,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([name_x])
env.check_md_complete(name_x)
@@ -451,7 +445,7 @@ class TestAutov2:
conf.add_vhost(name_b)
conf.install()
# restart, check that host still works and kept the cert
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(new_list)
status = env.get_certificate_status(name_a)
assert cert_a.same_serial_as(status['rsa']['serial'])
@@ -475,7 +469,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([name_x])
env.check_md_complete(name_x)
@@ -495,7 +489,7 @@ class TestAutov2:
conf.add_vhost(name_b)
conf.install()
# restart, check that host still works and have new cert
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(new_list)
assert env.await_completion([name_a])
#
@@ -520,7 +514,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md([name1])
env.check_md([name2])
assert env.await_completion([name1, name2])
@@ -538,7 +532,7 @@ class TestAutov2:
conf.add_md([name1])
conf.add_vhost([name1, name2])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md([name1, name2])
assert env.await_completion([name1])
#
@@ -563,7 +557,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains1)
assert env.await_completion([name_x])
env.check_md_complete(name_x)
@@ -576,7 +570,7 @@ class TestAutov2:
conf.add_vhost(domains=domains2)
conf.install()
# restart, check that host still works and kept the cert
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
status = env.get_certificate_status(name_a)
assert cert_x.same_serial_as(status['rsa']['serial'])
@@ -597,7 +591,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# check that acme-tls/1 is available for all domains
stat = env.get_md_status(domain)
@@ -625,11 +619,18 @@ class TestAutov2:
#
# restart (-> drive), check that MD job shows errors
# and that missing proto is detected
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# check that acme-tls/1 is available for none of the domains
stat = env.get_md_status(domain)
assert stat["proto"]["acme-tls/1"] == []
+ MDConf(env).install()
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ env.httpd_error_log.ignore_recent(matches=[
+ r'.*None of offered challenge types for domain.*',
+ ], lognos=[
+ "AH10056" # challenges not available
+ ])
# test case: 2.4.40 mod_ssl stumbles over a SSLCertificateChainFile when installing
# a fallback certificate
@@ -645,7 +646,7 @@ class TestAutov2:
conf.add_md(dns_list)
conf.add_vhost(dns_list)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
# test case: test "tls-alpn-01" without enabling 'acme-tls/1' challenge protocol
@@ -666,7 +667,7 @@ class TestAutov2:
#
# restart (-> drive), check that MD job shows errors
# and that missing proto is detected
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# check that acme-tls/1 is available for none of the domains
stat = env.get_md_status(domain)
@@ -694,7 +695,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(md_domains)
assert env.await_completion([domain])
env.check_md_complete(domain)
@@ -714,7 +715,7 @@ class TestAutov2:
""")
conf.add_md([domain])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
# Make a setup using the base server without http:, will fail.
@@ -728,7 +729,7 @@ class TestAutov2:
""")
conf.add_md([domain])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
#
env.httpd_error_log.ignore_recent(
@@ -759,7 +760,7 @@ class TestAutov2:
])
conf.add_md([domain])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_md_status(domain, via_domain=env.http_addr, use_https=False)
assert stat["proto"]["acme-tls/1"] == [domain]
assert env.await_completion([domain], via_domain=env.http_addr, use_https=False)
@@ -786,7 +787,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_error(long_domain)
# add a short domain to the SAN list, the CA should now use that one
@@ -800,7 +801,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([long_domain])
env.check_md_complete(long_domain)
#
@@ -823,7 +824,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
env.check_md_complete(domains[0])
@@ -842,7 +843,7 @@ class TestAutov2:
conf.install()
#
# restart (-> drive), check that MD was synched and completes
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
env.check_md_complete(domains[0])
Added: httpd/httpd/branches/2.4.x/test/modules/md/test_710_profiles.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_710_profiles.py?rev=1923593&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_710_profiles.py (added)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_710_profiles.py Wed Feb 5 12:41:51 2025
@@ -0,0 +1,132 @@
+import datetime
+import email.utils
+import os
+from datetime import timedelta
+
+import pytest
+from pyhttpd.certs import CertificateSpec
+
+from pyhttpd.env import HttpdTestEnv
+from .md_cert_util import MDCertUtil
+from .md_env import MDTestEnv
+from .md_conf import MDConf
+
+
+@pytest.mark.skipif(condition=not MDTestEnv.has_acme_server(),
+ reason="no ACME test server configured")
+class TestProfiles:
+
+ @pytest.fixture(autouse=True, scope='class')
+ def _class_scope(self, env, acme):
+ env.APACHE_CONF_SRC = "data/test_auto"
+ acme.start(config='default')
+ env.check_acme()
+ env.clear_store()
+ MDConf(env).install()
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+
+ @pytest.fixture(autouse=True, scope='function')
+ def _method_scope(self, env, request):
+ env.clear_store()
+ self.test_domain = env.get_request_domain(request)
+
+ def _write_res_file(self, doc_root, name, content):
+ if not os.path.exists(doc_root):
+ os.makedirs(doc_root)
+ open(os.path.join(doc_root, name), "w").write(content)
+
+ # create a MD with 'default' profile, get cert
+ def test_md_710_001(self, env):
+ domain = self.test_domain
+ # generate config with one MD
+ domains = [domain, "www." + domain]
+ conf = MDConf(env, admin="admin@" + domain)
+ conf.add_drive_mode("auto")
+ conf.start_md(domains)
+ conf.add(f' MDProfile default')
+ conf.end_md()
+ conf.add_vhost(domains)
+ conf.install()
+ #
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ assert env.await_completion(domains)
+ stat = env.get_md_status(domain)
+ assert stat["watched"] == 1
+ assert stat["profile"] == "default", f'{stat}'
+ assert stat['cert']['rsa']['valid']['until'], f'{stat}'
+ ts = email.utils.parsedate_to_datetime(stat['cert']['rsa']['valid']['until'])
+ valid = ts - datetime.datetime.now(datetime.UTC)
+ assert valid.days in [89, 90]
+
+ # create a MD with 'shortlived' profile, get cert
+ def test_md_710_002(self, env):
+ domain = self.test_domain
+ # generate config with one MD
+ domains = [domain, "www." + domain]
+ conf = MDConf(env, admin="admin@" + domain)
+ conf.add_drive_mode("auto")
+ conf.start_md(domains)
+ conf.add(f' MDProfile shortlived')
+ conf.add(f' MDProfileMandatory on')
+ conf.end_md()
+ conf.add_vhost(domains)
+ conf.install()
+ #
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ assert env.await_completion(domains)
+ stat = env.get_md_status(domain)
+ assert stat["watched"] == 1
+ assert stat["profile"] == "shortlived", f'{stat}'
+ assert stat['cert']['rsa']['valid']['until'], f'{stat}'
+ ts = email.utils.parsedate_to_datetime(stat['cert']['rsa']['valid']['until'])
+ valid = ts - datetime.datetime.now(datetime.UTC)
+ assert valid.days in [5, 6]
+
+ # create a MD with unknown 'XXX' profile, get cert
+ def test_md_710_003(self, env):
+ domain = self.test_domain
+ # generate config with one MD
+ domains = [domain, "www." + domain]
+ conf = MDConf(env, admin="admin@" + domain)
+ conf.add_drive_mode("auto")
+ conf.start_md(domains)
+ conf.add(f' MDProfile XXX')
+ conf.end_md()
+ conf.add_vhost(domains)
+ conf.install()
+ #
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ assert env.await_completion(domains)
+ stat = env.get_md_status(domain)
+ assert stat["watched"] == 1
+ assert stat["profile"] == "XXX", f'{stat}'
+
+ # create a MD with unknown 'XXX' profile, mandatory, fail
+ def test_md_710_004(self, env):
+ domain = self.test_domain
+ # generate config with one MD
+ domains = [domain, "www." + domain]
+ conf = MDConf(env, admin="admin@" + domain)
+ conf.add_drive_mode("auto")
+ conf.start_md(domains)
+ conf.add(f' MDProfile XXX')
+ conf.add(f' MDProfileMandatory on')
+ conf.end_md()
+ conf.add_vhost(domains)
+ conf.install()
+ #
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ assert env.await_error(domain)
+ stat = env.get_md_status(domain)
+ assert stat["watched"] == 1
+ assert stat["profile"] == "XXX", f'{stat}'
+ assert len(stat['cert']) == 0, f'{stat}'
+ assert stat['renewal']['errors'] > 0, f'{stat}'
+ assert stat['renewal']['last']['activity'] == 'Creating new order', f'{stat}'
+ MDConf(env).install()
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ env.httpd_error_log.ignore_recent(matches=[
+ r'.*mandatory ACME profile \'XXX\' is not offered by CA.*',
+ ], lognos=[
+ "AH10056" # processing failed
+ ])
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_720_wildcard.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_720_wildcard.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_720_wildcard.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_720_wildcard.py Wed Feb 5 12:41:51 2025
@@ -18,7 +18,7 @@ class TestWildcard:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -37,7 +37,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
md = env.await_error(domain)
@@ -69,7 +69,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
md = env.await_error(domain)
@@ -100,7 +100,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([domain])
@@ -125,7 +125,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
md = env.await_error(domain)
@@ -156,7 +156,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([domain])
@@ -183,7 +183,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([domain])
@@ -211,7 +211,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([domain])
@@ -238,7 +238,7 @@ class TestWildcard:
conf.install()
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([wwwdomain])
@@ -270,7 +270,7 @@ class TestWildcard:
fd.write(content)
# restart, check that md is in store
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
# await drive completion
assert env.await_completion([domain], restart=False)
@@ -278,5 +278,5 @@ class TestWildcard:
r = env.curl_get(f"http://{domain}:{env.http_port}/.well-known/acme-challenge/123456")
assert r.response['status'] == 200
assert r.response['body'] == content
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_730_static.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_730_static.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_730_static.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_730_static.py Wed Feb 5 12:41:51 2025
@@ -19,7 +19,7 @@ class TestStatic:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -48,7 +48,7 @@ class TestStatic:
conf.end_md()
conf.add_vhost(domain)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# check if the domain uses it, it appears in our stats and renewal is off
cert = env.get_cert(domain)
@@ -83,7 +83,7 @@ class TestStatic:
conf.end_md()
conf.add_vhost(domain)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# this should enforce a renewal
stat = env.get_md_status(domain)
assert stat['renew'] is True, stat
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_740_acme_errors.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_740_acme_errors.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_740_acme_errors.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_740_acme_errors.py Wed Feb 5 12:41:51 2025
@@ -16,7 +16,7 @@ class TestAcmeErrors:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -33,7 +33,7 @@ class TestAcmeErrors:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md
assert md['renewal']['errors'] > 0
@@ -65,7 +65,7 @@ class TestAcmeErrors:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md
assert md['renewal']['errors'] > 0
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_741_setup_errors.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_741_setup_errors.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_741_setup_errors.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_741_setup_errors.py Wed Feb 5 12:41:51 2025
@@ -18,7 +18,7 @@ class TestSetupErrors:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -42,7 +42,7 @@ class TestSetupErrors:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain, errors=2, timeout=10)
assert md
assert md['renewal']['errors'] > 0
@@ -65,13 +65,13 @@ class TestSetupErrors:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md(domains)
assert env.await_completion([domain], restart=False)
staged_md_path = env.store_staged_file(domain, 'md.json')
with open(staged_md_path, 'w') as fd:
fd.write('garbage\n')
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
env.check_md_complete(domain)
env.httpd_error_log.ignore_recent(
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_750_eab.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_750_eab.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_750_eab.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_750_eab.py Wed Feb 5 12:41:51 2025
@@ -18,7 +18,7 @@ class TestEab:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -33,7 +33,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] == 'urn:ietf:params:acme:error:externalAccountRequired'
@@ -56,7 +56,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] == 'apache:eab-hmac-invalid'
@@ -79,7 +79,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] in [
@@ -105,7 +105,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] in [
@@ -131,7 +131,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] in [
@@ -158,7 +158,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
def test_md_750_011(self, env):
@@ -174,7 +174,7 @@ class TestEab:
conf.add_md([domain_b])
conf.add_vhost(domains=[domain_b])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain_a], restart=False)
md = env.await_error(domain_b)
assert md['renewal']['errors'] > 0
@@ -202,7 +202,7 @@ class TestEab:
conf.end_md()
conf.add_vhost(domains=[domain_b])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain_b], restart=False)
md = env.await_error(domain_a)
assert md['renewal']['errors'] > 0
@@ -231,7 +231,7 @@ class TestEab:
conf.end_md()
conf.add_vhost(domains=[domain_b])
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain_a, domain_b])
md_a = env.get_md_status(domain_a)
md_b = env.get_md_status(domain_b)
@@ -247,7 +247,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
md_1 = env.get_md_status(domain)
conf = MDConf(env)
@@ -258,7 +258,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
md_2 = env.get_md_status(domain)
assert md_1['ca'] != md_2['ca']
@@ -273,7 +273,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
conf = MDConf(env)
# this is another one of the values in conf/pebble-eab.json
@@ -282,7 +282,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
@@ -307,7 +307,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
conf = MDConf(env)
# this is another one of the values in conf/pebble-eab.json
@@ -317,7 +317,7 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
@@ -343,7 +343,7 @@ class TestEab:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md['renewal']['errors'] > 0
assert md['renewal']['last']['problem'] == 'urn:ietf:params:acme:error:externalAccountRequired'
@@ -432,5 +432,5 @@ class TestEab:
conf.add_md(domains)
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_751_sectigo.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_751_sectigo.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_751_sectigo.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_751_sectigo.py Wed Feb 5 12:41:51 2025
@@ -46,7 +46,7 @@ class TestSectigo:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -65,7 +65,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -83,7 +83,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.get_md_status(domain)
assert md['renewal']['errors'] > 0
@@ -101,7 +101,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.get_md_status(domain)
assert md['renewal']['errors'] > 0
@@ -120,7 +120,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -142,7 +142,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain2}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -167,7 +167,7 @@ class TestSectigo:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_752_zerossl.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_752_zerossl.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_752_zerossl.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_752_zerossl.py Wed Feb 5 12:41:51 2025
@@ -43,7 +43,7 @@ class TestZeroSSL:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -66,7 +66,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -88,7 +88,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.get_md_status(domain)
assert md['renewal']['errors'] > 0
@@ -110,7 +110,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(domain)
md = env.get_md_status(domain)
assert md['renewal']['errors'] > 0
@@ -134,7 +134,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -160,7 +160,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain2}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
@@ -188,7 +188,7 @@ class TestZeroSSL:
conf.end_md()
conf.add_vhost(domains=domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
r = env.curl_get(f"https://{domain}:{env.https_port}", options=[
"--cacert", f"{env.test_dir}/data/sectigo-demo-root.pem"
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_780_tailscale.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_780_tailscale.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_780_tailscale.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_780_tailscale.py Wed Feb 5 12:41:51 2025
@@ -103,7 +103,7 @@ class TestTailscale:
acme.start(config='default')
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
yield
faker.stop()
@@ -133,7 +133,7 @@ class TestTailscale:
conf.add_vhost(domains)
conf.install()
# restart and watch it fail due to wrong tailscale unix socket path
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md
assert md['renewal']['errors'] > 0
@@ -163,9 +163,9 @@ class TestTailscale:
conf.add_vhost(domains)
conf.install()
# restart and watch it fail due to wrong tailscale unix socket path
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(domain)
# create a MD using `tailscale` as protocol, but domain name not assigned by tailscale
@@ -184,7 +184,7 @@ class TestTailscale:
conf.add_vhost(domains)
conf.install()
# restart and watch it fail due to wrong tailscale unix socket path
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md
assert md['renewal']['errors'] > 0
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_790_failover.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_790_failover.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_790_failover.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_790_failover.py Wed Feb 5 12:41:51 2025
@@ -16,7 +16,7 @@ class TestFailover:
conf = MDConf(env)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -39,7 +39,7 @@ class TestFailover:
conf.end_md()
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
env.check_md_complete(domain)
@@ -60,7 +60,7 @@ class TestFailover:
conf.end_md()
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
env.check_md_complete(domain)
#
@@ -91,7 +91,7 @@ class TestFailover:
conf.end_md()
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
env.check_md_complete(domain)
#
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_800_must_staple.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_800_must_staple.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_800_must_staple.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_800_must_staple.py Wed Feb 5 12:41:51 2025
@@ -17,7 +17,7 @@ class TestMustStaple:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -33,7 +33,7 @@ class TestMustStaple:
# MD with default, e.g. not staple
def test_md_800_001(self, env):
self.configure_httpd(env, self.domain)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([self.domain])
env.check_md_complete(self.domain)
cert1 = MDCertUtil(env.store_domain_file(self.domain, 'pubcert.pem'))
@@ -42,7 +42,7 @@ class TestMustStaple:
# MD that should explicitly not staple
def test_md_800_002(self, env):
self.configure_httpd(env, self.domain, "MDMustStaple off")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
env.check_md_complete(self.domain)
cert1 = MDCertUtil(env.store_domain_file(self.domain, 'pubcert.pem'))
assert not cert1.get_must_staple()
@@ -53,13 +53,13 @@ class TestMustStaple:
@pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_800_003(self, env):
self.configure_httpd(env, self.domain, "MDMustStaple on")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([self.domain])
env.check_md_complete(self.domain)
cert1 = MDCertUtil(env.store_domain_file(self.domain, 'pubcert.pem'))
assert cert1.get_must_staple()
self.configure_httpd(env, self.domain, "MDMustStaple off")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([self.domain])
env.check_md_complete(self.domain)
cert1 = MDCertUtil(env.store_domain_file(self.domain, 'pubcert.pem'))
@@ -78,7 +78,7 @@ class TestMustStaple:
SSLUseStapling On
SSLStaplingCache shmcb:stapling_cache(128000)
""")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_ocsp_status(self.domain)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_801_stapling.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_801_stapling.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_801_stapling.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_801_stapling.py Wed Feb 5 12:41:51 2025
@@ -12,7 +12,6 @@ from .md_env import MDTestEnv
@pytest.mark.skipif(condition=not MDTestEnv.has_acme_server(),
reason="no ACME test server configured")
-@pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
class TestStapling:
@pytest.fixture(autouse=True, scope='class')
@@ -25,7 +24,7 @@ class TestStapling:
mdB = "b-" + domain
self.configure_httpd(env, [mdA, mdB]).install()
env.apache_stop()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([mdA, mdB])
env.check_md_complete(mdA)
env.check_md_complete(mdB)
@@ -68,9 +67,12 @@ class TestStapling:
def test_md_801_001(self, env):
md = self.mdA
self.configure_httpd(env, md).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_ocsp_status(md)
- assert stat['ocsp'] == "no response sent"
+ if MDTestEnv.lacks_ocsp():
+ assert 'ocsp' not in stat or stat['ocsp'] == "no response sent", f'{stat}'
+ else:
+ assert stat['ocsp'] == "no response sent"
stat = env.get_md_status(md)
assert not stat["stapling"]
#
@@ -79,30 +81,43 @@ class TestStapling:
MDStapling on
LogLevel md:trace5
""").install()
- assert env.apache_restart() == 0
- stat = env.await_ocsp_status(md)
- assert stat['ocsp'] == "successful (0x0)"
- assert stat['verify'] == "0 (ok)"
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
+ if MDTestEnv.lacks_ocsp():
+ stat = env.get_md_status(md)
+ assert 'ocsp' not in stat or stat['ocsp'] == "no response sent", f'{stat}'
+ else:
+ stat = env.await_ocsp_status(md)
+ assert stat['ocsp'] == "successful (0x0)"
+ assert stat['verify'] == "0 (ok)"
stat = env.get_md_status(md)
- assert stat["stapling"]
- pkey = 'rsa'
- assert stat["cert"][pkey]["ocsp"]["status"] == "good"
- assert stat["cert"][pkey]["ocsp"]["valid"]
+ if MDTestEnv.lacks_ocsp():
+ assert stat["stapling"]
+ pkey = 'rsa'
+ assert 'ocsp' not in stat["cert"][pkey], f'{stat}'
+ else:
+ assert stat["stapling"]
+ pkey = 'rsa'
+ assert stat["cert"][pkey]["ocsp"]["status"] == "good"
+ assert stat["cert"][pkey]["ocsp"]["valid"]
#
# turn stapling off (explicitly) again, should disappear
self.configure_httpd(env, md, "MDStapling off").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_ocsp_status(md)
- assert stat['ocsp'] == "no response sent"
+ if MDTestEnv.lacks_ocsp():
+ assert 'ocsp' not in stat or stat['ocsp'] == "no response sent", f'{stat}'
+ else:
+ assert stat['ocsp'] == "no response sent"
stat = env.get_md_status(md)
assert not stat["stapling"]
# MD with stapling on/off and mod_ssl stapling on
# expect to see stapling response in all cases
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_002(self, env):
md = self.mdA
self.configure_httpd(env, md, ssl_stapling=True).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)" if \
env.ssl_module == "mod_ssl" else "no response sent"
@@ -111,7 +126,7 @@ class TestStapling:
#
# turn stapling on, wait for it to appear in connections
self.configure_httpd(env, md, "MDStapling on", ssl_stapling=True).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
@@ -123,7 +138,7 @@ class TestStapling:
#
# turn stapling off (explicitly) again, should disappear
self.configure_httpd(env, md, "MDStapling off", ssl_stapling=True).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)" if \
env.ssl_module == "mod_ssl" else "no response sent"
@@ -145,23 +160,30 @@ class TestStapling:
conf.add_vhost(md_a)
conf.add_vhost(md_b)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# mdA has stapling
- stat = env.await_ocsp_status(md_a)
- assert stat['ocsp'] == "successful (0x0)"
+ if MDTestEnv.lacks_ocsp():
+ stat = env.get_ocsp_status(md_a)
+ assert 'ocsp' not in stat or stat['ocsp'] == "no response sent", f'{stat}'
+ else:
+ stat = env.await_ocsp_status(md_a)
+ assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
stat = env.get_md_status(md_a)
assert stat["stapling"]
- pkey = 'rsa'
- assert stat["cert"][pkey]["ocsp"]["status"] == "good"
- assert stat["cert"][pkey]["ocsp"]["valid"]
+ if not MDTestEnv.lacks_ocsp():
+ pkey = 'rsa'
+ assert stat["cert"][pkey]["ocsp"]["status"] == "good"
+ assert stat["cert"][pkey]["ocsp"]["valid"]
# mdB has no stapling
- stat = env.get_ocsp_status(md_b)
- assert stat['ocsp'] == "no response sent"
+ if not MDTestEnv.lacks_ocsp():
+ stat = env.get_ocsp_status(md_b)
+ assert stat['ocsp'] == "no response sent"
stat = env.get_md_status(md_b)
assert not stat["stapling"]
# 2 MDs, md stapling on+off, ssl stapling on
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_004(self, env):
md_a = self.mdA
md_b = self.mdB
@@ -176,7 +198,7 @@ class TestStapling:
conf.add_vhost(md_a)
conf.add_vhost(md_b)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# mdA has stapling
stat = env.await_ocsp_status(md_a)
assert stat['ocsp'] == "successful (0x0)"
@@ -195,12 +217,13 @@ class TestStapling:
# MD, check that restart leaves response unchanged, reconfigure keep interval,
# should remove the file on restart and get a new one
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_005(self, env):
# TODO: mod_watchdog seems to have problems sometimes with fast restarts
# turn stapling on, wait for it to appear in connections
md = self.mdA
self.configure_httpd(env, md, "MDStapling on").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
@@ -215,7 +238,7 @@ class TestStapling:
mtime1 = os.path.getmtime(ocsp_file)
# wait a sec, restart and check that file does not change
time.sleep(1)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
mtime2 = os.path.getmtime(ocsp_file)
@@ -227,12 +250,12 @@ class TestStapling:
MDStapling on
MDStaplingKeepResponse 1s
""").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert not os.path.exists(ocsp_file)
# if we restart again, a new file needs to appear
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
mtime3 = os.path.getmtime(ocsp_file)
@@ -240,11 +263,12 @@ class TestStapling:
# MD, check that stapling renew window works. Set a large window
# that causes response to be retrieved all the time.
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_006(self, env):
# turn stapling on, wait for it to appear in connections
md = self.mdA
self.configure_httpd(env, md, "MDStapling on").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
@@ -257,7 +281,7 @@ class TestStapling:
ocsp_file = os.path.join(dirpath, name)
assert ocsp_file
mtime1 = os.path.getmtime(ocsp_file)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
# wait a sec, restart and check that file does not change
@@ -269,7 +293,7 @@ class TestStapling:
MDStapling on
MDStaplingRenewWindow 10d
""").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
# wait a sec, restart and check that file does change
@@ -278,6 +302,7 @@ class TestStapling:
assert mtime1 != mtime3
# MD, make a MDomain with static files, check that stapling works
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_007(self, env):
# turn stapling on, wait for it to appear in connections
md = self.mdA
@@ -292,7 +317,7 @@ class TestStapling:
env.store_domain_file(md, 'pubcert.pem')))
conf.add_vhost(md)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
@@ -306,6 +331,7 @@ class TestStapling:
assert ocsp_file
# Use certificate files in direct config, check that stapling works
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_008(self, env):
# turn stapling on, wait for it to appear in connections
md = self.mdA
@@ -316,7 +342,7 @@ class TestStapling:
env.store_domain_file(md, 'privkey.pem'))
conf.end_vhost()
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.await_ocsp_status(md)
assert stat['ocsp'] == "successful (0x0)"
assert stat['verify'] == "0 (ok)"
@@ -331,6 +357,7 @@ class TestStapling:
# Turn on stapling for a certificate without OCSP responder and issuer
# (certificates without issuer prevent mod_ssl asking around for stapling)
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_009(self, env):
md = self.mdA
domains = [md]
@@ -353,13 +380,14 @@ class TestStapling:
conf.end_md()
conf.add_vhost(md)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
time.sleep(1)
stat = env.get_ocsp_status(md)
assert stat['ocsp'] == "no response sent"
# Turn on stapling for an MDomain not used in any virtualhost
# There was a crash in server-status in this case
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_010(self, env):
env.clear_ocsp_store()
md = self.mdA
@@ -369,7 +397,7 @@ class TestStapling:
conf.add("MDStapling on")
conf.end_md()
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
stat = env.get_server_status()
assert stat
@@ -379,15 +407,16 @@ class TestStapling:
# scheduling.
# This checks the mistaken assert() reported in
# <https://bz.apache.org/bugzilla/show_bug.cgi?id=65567>
+ @pytest.mark.skipif(MDTestEnv.lacks_ocsp(), reason="no OCSP responder")
def test_md_801_011(self, env):
domains = [ f'test-801-011-{i}-{env.DOMAIN_SUFFIX}' for i in range(7)]
self.configure_httpd(env, domains, """
MDStapling on
LogLevel md:trace2 ssl:warn
""").install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains, restart=False, timeout=120)
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# now the certs are installed and ocsp will be retrieved
time.sleep(1)
for domain in domains:
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_810_ec.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_810_ec.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_810_ec.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_810_ec.py Wed Feb 5 12:41:51 2025
@@ -18,7 +18,7 @@ class TestAutov2:
env.check_acme()
env.clear_store()
MDConf(env).install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
@pytest.fixture(autouse=True, scope='function')
def _method_scope(self, env, request):
@@ -33,7 +33,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
def check_pkeys(self, env, domain, pkeys):
@@ -100,7 +100,7 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
md = env.await_error(domain)
assert md
assert md['renewal']['errors'] > 0
@@ -135,14 +135,14 @@ class TestAutov2:
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion(domains)
conf = MDConf(env)
conf.add("MDPrivateKeys rsa3072 secp384r1")
conf.add_md(domains)
conf.add_vhost(domains)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
mds = env.get_md_status(domain, via_domain=domain, use_https=True)
assert 'renew' in mds and mds['renew'] is True, f"{mds}"
assert env.await_completion(domains)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_820_locks.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_820_locks.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_820_locks.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_820_locks.py Wed Feb 5 12:41:51 2025
@@ -37,7 +37,7 @@ class TestLocks:
self.configure_httpd(env, [domain], add_lines=[
"MDStoreLocks 1s"
])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
# renewal, with global lock held during restert
@@ -47,26 +47,26 @@ class TestLocks:
self.configure_httpd(env, [domain], add_lines=[
"MDStoreLocks 1s"
])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([domain])
# we have a cert now, add a dns name to force renewal
certa = MDCertUtil(env.store_domain_file(domain, 'pubcert.pem'))
self.configure_httpd(env, [domain, f"x.{domain}"], add_lines=[
"MDStoreLocks 1s"
])
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# await new cert, but do not restart, keeps the cert in staging
assert env.await_completion([domain], restart=False)
# obtain global lock and restart
lockfile = os.path.join(env.store_dir, "store.lock")
with FileLock(lockfile):
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
# lock should have prevented staging from being activated,
# meaning we will have the same cert
certb = MDCertUtil(env.store_domain_file(domain, 'pubcert.pem'))
assert certa.same_serial_as(certb)
# now restart without lock
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
certc = MDCertUtil(env.store_domain_file(domain, 'pubcert.pem'))
assert not certa.same_serial_as(certc)
Modified: httpd/httpd/branches/2.4.x/test/modules/md/test_900_notify.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/md/test_900_notify.py?rev=1923593&r1=1923592&r2=1923593&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/md/test_900_notify.py (original)
+++ httpd/httpd/branches/2.4.x/test/modules/md/test_900_notify.py Wed Feb 5 12:41:51 2025
@@ -45,7 +45,7 @@ class TestNotify:
self.configure_httpd(env, self.domain, f"""
MDNotifyCmd {command} {args}
""")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(self.domain)
stat = env.get_md_status(self.domain)
assert stat["renewal"]["last"]["problem"] == "urn:org:apache:httpd:log:AH10108:"
@@ -63,7 +63,7 @@ class TestNotify:
self.configure_httpd(env, self.domain, f"""
MDNotifyCmd {command} {args}
""")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_error(self.domain)
stat = env.get_md_status(self.domain)
assert stat["renewal"]["last"]["problem"] == "urn:org:apache:httpd:log:AH10108:"
@@ -83,7 +83,7 @@ class TestNotify:
self.configure_httpd(env, self.domain, f"""
MDNotifyCmd {command} {args}
""")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([self.domain], restart=False)
time.sleep(1)
stat = env.get_md_status(self.domain)
@@ -102,7 +102,7 @@ class TestNotify:
self.configure_httpd(env, self.domain, f"""
MDNotifyCmd {command} {args} {extra_arg}
""")
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([self.domain], restart=False)
time.sleep(1)
stat = env.get_md_status(self.domain)
@@ -125,7 +125,7 @@ class TestNotify:
conf.add_vhost(domains1)
conf.add_vhost(domains2)
conf.install()
- assert env.apache_restart() == 0
+ assert env.apache_restart() == 0, f'{env.apachectl_stderr}'
assert env.await_completion([md1, md2], restart=False)
time.sleep(1)
stat = env.get_md_status(md1)