#############################################################################
#
# This is a configuration file for Privoxy-Regression-Test
-# (included in the source tarball's tools directory).
+# (included in the source tarball's tools directory and available at
+# https://www.privoxy.org/gitweb/?p=privoxy.git;a=blob;f=tools/privoxy-regression-test.pl;hb=HEAD).
#
-# After referencing it in your Privoxy configuration both Privoxy and
+# After referencing this file in your Privoxy configuration both Privoxy and
# Privoxy-Regression-Test should be good to go.
#
#############################################################################
#
-# Copyright (c) 2007-2018 Fabian Keil <fk@fabiankeil.de>
+# Copyright (c) 2007-2023 Fabian Keil <fk@fabiankeil.de>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
#############################################################################
{{settings}}
-for-privoxy-version=3.0.27
+for-privoxy-version=3.0.33
# Some dependencies Privoxy-Regression-Test should know about:
#
# Level 17 needs = feature status FEATURE_64_BIT_TIME_T Yes
# Level 18 needs = feature status FEATURE_GRACEFUL_TERMINATION No
# Level 19 needs = feature status FEATURE_GRACEFUL_TERMINATION Yes
-# Level 20 needs = feature status FEATURE_TOGGLE Yes
-# Level 21 needs = feature status FEATURE_TOGGLE No
+# Level 20 needs = config line enable-remote-toggle\s+1
+# Level 21 needs = config line enable-remote-toggle\s+0
# Level 22 needs = config line enable-proxy-authentication-forwarding\s+0
# Level 23 needs = config line enable-proxy-authentication-forwarding\s+1
# Level 24 needs = feature status FEATURE_CLIENT_TAGS Yes
+# Level 25 needs = feature status FEATURE_HTTPS_INSPECTION No
+# Level 26 needs = feature status FEATURE_PCRE_HOST_PATTERNS Yes
#######################################################
# Enable taggers to activate the tests on demand
# Set Header = Referer: http://
# Expect Header = REMOVAL
#
-# Set Header = Referer: https://p.p/
+# Set Header = Referer: https://www.privoxy.org/
+# Expect Header = REMOVAL
+#
+# Set Header = Referer: http://www.privoxy.org/
# Expect Header = REMOVAL
TAG:^hide-referrer\{conditional-block\}$
# Set Header = Referer: http://
# Expect Header = Referer: http://p.p/
#
-# Set Header = Referer: https://p.p/
+# Set Header = Referer: https://www.privoxy.org/
+# Expect Header = Referer: http://p.p/
+#
+# Set Header = Referer: http://www.privoxy.org/
# Expect Header = Referer: http://p.p/
TAG:^hide-referrer\{conditional-forge\}$
# Expect Header = Referer: http://config.privoxy.org/foo/baaz.html
TAG:^client-header-filter\{hide-tor-exit-notation\}$
+#######################################################
+# Test client-header-filter{no-brotli-accepted}.
+#######################################################
+
+{+client-header-filter{no-brotli-accepted}}
+# Set Header = Accept-Encoding: gzip, deflate, br
+# Expect Header = Accept-Encoding: gzip, deflate
+#
+# Set Header = Accept-Encoding: gzip, br, deflate
+# Expect Header = Accept-Encoding: gzip, deflate
+#
+# Set Header = Accept-Encoding: br, gzip, deflate
+# Expect Header = Accept-Encoding: gzip, deflate
+#
+# Set Header = Accept-Encoding: br
+# Expect Header = Accept-Encoding:
+#
+# Set Header = Accept-Encoding: gzip, deflate
+# Expect Header = NO CHANGE
+#
+TAG:^client-header-filter\{no-brotli-accepted\}$
+
#######################################################
# Test crunch-client-header{}.
#######################################################
TAG:^connection-sharing disabled$
{}
+# XXX: This test is expected to fail when using "https://p.p/"
+# as CGI prefix with https inspection enabled but can't
+# yet be automatically skipped. By design connections aren't
+# shared when using "https://" so Privoxy does not remove the
+# header.
# Set Header = Connection: close
# Expect Header = REMOVAL
# Level = 16
TAG:^No Host header$
{}
+# XXX: This test is expected to fail when using "https://p.p/"
+# as CGI prefix with https inspection enabled but can't
+# yet be automatically skipped. The reason for the test
+# failure is that Privoxy-Regression-Test only modifies
+# the Host header for the CONNECT request, not for the
+# actual request that follows. Changing that would not
+# fix the test though as a modified Host header in the
+# actual request would result in Privoxy attempting to
+# connect to it.
# Set Header = Host: whatever.example.org
# Expect Header = NO CHANGE
TAG:^Host header other than the target host$
# Expect Status Code = 404
# Level = 18
# Fetch Test = http://p.p/die
-# Expect Status Code = 200
+# Expect Status Code = 403
# Level = 19
# Fetch Test = http://p.p/show-status
# Fetch Test = http://config.privoxy.org/show-status?file=actions&index=0
# Expect Status Code = 403
# Level = 21
# Fetch Test = http://p.p/edit-actions
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eaa
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eau
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/ear
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eal
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eafu
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eas
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/easa
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/easr
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/eass
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-for-url
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-list
# Level = 12
# Fetch Test = http://p.p/edit-actions-submit
+# Expect Status Code = 403
# Level = 12
+# Expect Status Code = 403
# Fetch Test = http://p.p/edit-actions-url
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-url-form
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-add-url
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-add-url-form
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-remove-url
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-remove-url-form
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-section-add
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-section-remove
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/edit-actions-section-swap
+# Expect Status Code = 403
# Level = 12
# Fetch Test = http://p.p/error-favicon.ico
# Fetch Test = http://p.p/favicon.ico
# Fetch Test = http://p.p/robots.txt
# Fetch Test = http://p.p/send-banner
+# Fetch Test = http://p.p/send-banner?type=r
+# Fetch Test = http://p.p/send-banner?type=auto
+# Fetch Test = http://p.p/send-banner?type=blank
+# Fetch Test = http://p.p/send-banner?type=pattern
# Trusted CGI Request = http://p.p/send-stylesheet
# Fetch Test = http://p.p/send-stylesheet
# Expect Status Code = 403
# Fetch Test = http://p.p/toggle-client-tag
# Expect Status Code = 403
# Level = 24
+# Fetch Test = http://p.p/wpad.dat
# Trusted CGI Request = http://p.p/edit-actions
# Expect Status Code = 302
# Level = 12
# Trusted CGI Request = http://p.p/send-stylesheet
+# CVE-2021-20217
+# Fetch Test = http://config.privoxy.org/?1&0
+# OVE-20210203-0001
+# Fetch Test = http://config.privoxy.org/show-url-info?url=0%%0A0
+
# The following tests depend on Privoxy being configured to deliver the user manual
# Fetch Test = http://p.p/user-manual
# Method Test = OPTIONS
# Method Test = TRACE
# Method Test = CONNECT
+# Level = 25
# Method Test = PROPFIND
# Method Test = PROPPATCH
# Method Test = MOVE
# Redirected URL = http://redirect2.example.net/blafasel?x=http://redirected.example.net/¶meter1=part-of-the-redirected-url1¶meter2=part-of-the-redirected-url1
# Redirect Destination = http://redirected.example.net/¶meter1=part-of-the-redirected-url1¶meter2=part-of-the-redirected-url1
redirect2.example.net/
+
+# Redirected URL = http://redirect3.example.net/01-02-03-04-05-06-07-08-09
+# Redirect Destination = http://redirect3.example.net/09-08-07-06-05-04-03-02-01
+{+redirect{s@/(\d+)-(\d+)-(\d+)-(\d+)-(\d+)-(\d+)-(\d+)-(\d+)-(\d+)@/$9-$8-$7-$6-$5-$4-$3-$2-$1@}}
+redirect3.example.net/01-02-03-04-05-06-07-08-09
+
+{+delay-response{1}}
+# Fetch Test = http://config.privoxy.org/show-url-info?url=http%3A%2F%2Fwww.example.com%2Fprivoxy-test-delay-response
+config.privoxy.org/show-url-info\?url=http%3A%2F%2Fwww\.example\.com%2Fprivoxy-test-delay-response
+
+{+block{Block with pcre host pattern}}
+# Blocked URL = http://aaa.example.org/
+# Level = 26
+PCRE-HOST-PATTERN:^a{3}\.example\.org$
+# Blocked URL = http://bbb.example.org/
+# Level = 26
+PCRE-HOST-PATTERN:^(bbb|ccc|ddd)\.example\.org$