From d573921f883d00d8c88968969a622b784589f571 Mon Sep 17 00:00:00 2001 From: devenv Date: Thu, 8 Jan 2026 08:52:32 -0500 Subject: [PATCH] Adds test for disabled note option in RequestHeader --- test/modules/core/env.py | 2 +- .../testuser/public_html/cgi-bin/.htaccess | 1 + .../testuser/public_html/cgi-bin/test.cgi | 4 ++ test/modules/core/test_005_userdir_headers.py | 43 +++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100755 test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/.htaccess create mode 100755 test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/test.cgi create mode 100644 test/modules/core/test_005_userdir_headers.py diff --git a/test/modules/core/env.py b/test/modules/core/env.py index 9c63380503c..21906be7361 100644 --- a/test/modules/core/env.py +++ b/test/modules/core/env.py @@ -12,7 +12,7 @@ class CoreTestSetup(HttpdTestSetup): def __init__(self, env: 'HttpdTestEnv'): super().__init__(env=env) self.add_source_dir(os.path.dirname(inspect.getfile(CoreTestSetup))) - self.add_modules(["cgid"]) + self.add_modules(["cgid","include","userdir","suexec","headers"]) class CoreTestEnv(HttpdTestEnv): diff --git a/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/.htaccess b/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/.htaccess new file mode 100755 index 00000000000..74b332a52ff --- /dev/null +++ b/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/.htaccess @@ -0,0 +1 @@ +RequestHeader note internal_note "empty_note" diff --git a/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/test.cgi b/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/test.cgi new file mode 100755 index 00000000000..310aae2d31e --- /dev/null +++ b/test/modules/core/htdocs/userdir/testuser/public_html/cgi-bin/test.cgi @@ -0,0 +1,4 @@ +#!/bin/sh +echo "Content-Type: text/plain" +echo +echo "OK" \ No newline at end of file diff --git a/test/modules/core/test_005_userdir_headers.py b/test/modules/core/test_005_userdir_headers.py new file mode 100644 index 00000000000..3485c32a9a3 --- /dev/null +++ b/test/modules/core/test_005_userdir_headers.py @@ -0,0 +1,43 @@ +import os +import re +import pytest + +from pyhttpd.conf import HttpdConf + +class TestUserdirHeaders: + + @pytest.fixture(autouse=True, scope='class') + def _class_scope(self, env): + + userdir_base = os.path.join(env.server_dir, "htdocs", "userdir") + + conf = HttpdConf(env, extras={ + 'base': f""" + UserDir "{userdir_base}/*/public_html" + + + AllowOverride FileInfo + Options +ExecCGI + SetHandler cgi-script + + """ + }) + conf.add_vhost_test1() + conf.install() + assert env.apache_restart() == 0 + + def test_core_005_01_requestheader_note_rejected(self, env): + url = env.mkurl("http", "test1", "/~testuser/cgi-bin/test.cgi") + r = env.curl_get(url) + + # Check error log for the rejection message + re_rejection = re.compile(r".*RequestHeader does not support the 'note' action.*") + + directive_rejected = False + try: + directive_rejected = env.httpd_error_log.scan_recent(re_rejection) + except TimeoutError: + pass + + assert directive_rejected, \ + "RequestHeader note directive was not rejected"