From c9cf025fadfe043f0f2f679e10d1207d8a158bb6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 17:01:31 +0200 Subject: Adding debian version 2.4.57-2. Signed-off-by: Daniel Baumann --- debian/perl-framework/t/apache/etags.t | 170 +++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 debian/perl-framework/t/apache/etags.t (limited to 'debian/perl-framework/t/apache/etags.t') diff --git a/debian/perl-framework/t/apache/etags.t b/debian/perl-framework/t/apache/etags.t new file mode 100644 index 0000000..6618a88 --- /dev/null +++ b/debian/perl-framework/t/apache/etags.t @@ -0,0 +1,170 @@ +# +# Test the FileETag directive. +# +use strict; +use warnings FATAL => 'all'; + +use Apache::Test; +use Apache::TestRequest; +use Apache::TestUtil; + +t_debug "Checking for existence of FileETag directive\n"; +my $resp = GET('/apache/etags/test.txt'); +my $rc = $resp->code; +t_debug "Returned $rc:"; +if ($rc == 500) { + t_debug "Feature not supported, skipping..", + " Message was:", $resp->as_string; + if (defined($resp->content)) { + t_debug $resp->content; + } + plan tests => 1..0; + exit; +} + +# +# The tests verify the inclusion of the different fields, and +# inheritance, according to the directories involved. All are +# subdirectories under /apache/etags/. The key is the path, the value +# is the pattern the ETag response header field needs to match, +# and the comment is the keywords on the FileETag directive in +# the directory's .htaccess file. A pattern of "" means the header +# field is expected to be absent. +# +# The things we want to test are: +# +# 1. That the 'All' and 'None' keywords work. +# 2. That the 'MTime', 'INode', and 'Size' keywords work, +# alone and in combination. +# 3. That '+MTime', '+INode', and '+Size' work, alone and +# in combination. +# 4. That '-MTime', '-INode', and '-Size' work, alone and +# in combination. +# 5. That relative keywords work in combination with non-relative +# ones. +# 6. That inheritance works properly. +# +my $x = '[0-9a-fA-F]+'; +my $tokens_1 = "^\"$x\"\$"; +my $tokens_2 = "^\"$x-$x\"\$"; +my $tokens_3 = "^\"$x-$x-$x\"\$"; +my %expect = ($tokens_1 => "one component in ETag field", + $tokens_2 => "two components in ETag field", + $tokens_3 => "three components in ETag field", + "" => "field to be absent" + ); +my $tokens_default = have_min_apache_version("2.3.15") ? $tokens_2 : $tokens_3; +my %tests = ( + '/default/' => $tokens_default, + # + # First, the absolute settings in various combinations, + # disregarding inheritance. + # + '/m/' => $tokens_1, # MTime + '/i/' => $tokens_1, # INode + '/s/' => $tokens_1, # Size + '/mi/' => $tokens_2, # MTime INode + '/ms/' => $tokens_2, # MTime Size + '/is/' => $tokens_2, # INode Size + '/mis/' => $tokens_3, # MTime INode Size + '/all/' => $tokens_3, # All + '/none/' => "", # None + '/all/m/' => $tokens_1, # MTime + '/all/i/' => $tokens_1, # INode + '/all/s/' => $tokens_1, # Size + '/all/mi/' => $tokens_2, # MTime INode + '/all/ms/' => $tokens_2, # MTime Size + '/all/is/' => $tokens_2, # INode Size + '/all/mis/' => $tokens_3, # MTime INode Size + '/all/inherit/' => $tokens_3, # no directive + '/none/m/' => $tokens_1, # MTime + '/none/i/' => $tokens_1, # INode + '/none/s/' => $tokens_1, # Size + '/none/mi/' => $tokens_2, # MTime INode + '/none/ms/' => $tokens_2, # MTime Size + '/none/is/' => $tokens_2, # INode Size + '/none/mis/' => $tokens_3, # MTime INode Size + '/none/inherit/' => "", # no directive + # + # Now for the relative keywords. First, subtract fields + # in a place where they all should have been inherited. + # + '/all/minus-m/' => $tokens_2, # -MTime + '/all/minus-i/' => $tokens_2, # -INode + '/all/minus-s/' => $tokens_2, # -Size + '/all/minus-mi/' => $tokens_1, # -MTime -INode + '/all/minus-ms/' => $tokens_1, # -MTime -Size + '/all/minus-is/' => $tokens_1, # -INode -Size + '/all/minus-mis/' => "", # -MTime -INode -Size + # + # Now add them in a location where they should all be absent. + # + '/none/plus-m/' => $tokens_1, # +MTime + '/none/plus-i/' => $tokens_1, # +INode + '/none/plus-s/' => $tokens_1, # +Size + '/none/plus-mi/' => $tokens_2, # +MTime +INode + '/none/plus-ms/' => $tokens_2, # +MTime +Size + '/none/plus-is/' => $tokens_2, # +INode +Size + '/none/plus-mis/' => $tokens_3, # +MTime +INode +Size + # + # Try subtracting them below where they were added. + # + '/none/plus-mis/minus-m/' => $tokens_2, # -MTime + '/none/plus-mis/minus-i/' => $tokens_2, # -INode + '/none/plus-mis/minus-s/' => $tokens_2, # -Size + '/none/plus-mis/minus-mi/' => $tokens_1, # -MTime -INode + '/none/plus-mis/minus-ms/' => $tokens_1, # -MTime -Size + '/none/plus-mis/minus-is/' => $tokens_1, # -INode -Size + '/none/plus-mis/minus-mis/' => "", # -MTime -INode -Size + # + # Now relative settings under a non-All non-None absolute + # setting location. + # + '/m/plus-m/' => $tokens_1, # +MTime + '/m/plus-i/' => $tokens_2, # +INode + '/m/plus-s/' => $tokens_2, # +Size + '/m/plus-mi/' => $tokens_2, # +MTime +INode + '/m/plus-ms/' => $tokens_2, # +MTime +Size + '/m/plus-is/' => $tokens_3, # +INode +Size + '/m/plus-mis/' => $tokens_3, # +MTime +INode +Size + '/m/minus-m/' => "", # -MTime + '/m/minus-i/' => "", # -INode + '/m/minus-s/' => "", # -Size + '/m/minus-mi/' => "", # -MTime -INode + '/m/minus-ms/' => "", # -MTime -Size + '/m/minus-is/' => "", # -INode -Size + '/m/minus-mis/' => "" # -MTime -INode -Size + ); + +my $testcount = scalar(keys(%tests)); +plan tests => $testcount; + +for my $key (keys(%tests)) { + my $uri = "/apache/etags" . $key . "test.txt"; + my $pattern = $tests{$key}; + t_debug "---", "HEAD $uri", + "Expecting " . $expect{$pattern}; + $resp = HEAD($uri); + my $etag = $resp->header("ETag"); + if (defined($etag)) { + t_debug "Received $etag"; + ok ($etag =~ /$pattern/); + } + else { + t_debug "ETag field is missing"; + if ($tests{$key} eq "") { + ok 1; + } + else { + t_debug "ETag field was expected"; + ok 0; + } + } +} + +# +# Local Variables: +# mode: perl +# indent-tabs-mode: nil +# End: +# -- cgit v1.2.3