diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:51 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:51 +0000 |
commit | 4f0770f3df78ecd5dcaefbd214f7a1415366bca6 (patch) | |
tree | 72661b8f81594b855bcc967b819263f63fa30e17 /debian/perl-framework/t/apache/contentlength.t | |
parent | Adding upstream version 2.4.56. (diff) | |
download | apache2-debian/2.4.56-1_deb11u2.tar.xz apache2-debian/2.4.56-1_deb11u2.zip |
Adding debian version 2.4.56-1~deb11u2.debian/2.4.56-1_deb11u2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/perl-framework/t/apache/contentlength.t')
-rw-r--r-- | debian/perl-framework/t/apache/contentlength.t | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/debian/perl-framework/t/apache/contentlength.t b/debian/perl-framework/t/apache/contentlength.t new file mode 100644 index 0000000..f141990 --- /dev/null +++ b/debian/perl-framework/t/apache/contentlength.t @@ -0,0 +1,83 @@ +use strict; +use warnings FATAL => 'all'; + +use Apache::Test; +use Apache::TestUtil; +use Apache::TestRequest (); + +my @test_strings = ("", + "0", + "0000000000000000000000000000000000", + "1000000000000000000000000000000000", + "-1", + "123abc", + ); +my @req_strings = ("/echo_post", + "/i_do_not_exist_in_your_wildest_imagination"); + +my $resp_failure; +if (have_min_apache_version('2.2.30') + && (!have_min_apache_version('2.3.0') + || have_min_apache_version('2.4.14'))) { + $resp_failure = "HTTP/1.1 400 Bad Request"; +} +else { + $resp_failure = "HTTP/1.1 413 Request Entity Too Large"; +} +# This is expanded out. +my @resp_strings = ($resp_failure, + $resp_failure, + "HTTP/1.1 200 OK", + "HTTP/1.1 404 Not Found", + "HTTP/1.1 200 OK", + "HTTP/1.1 404 Not Found", + $resp_failure, + $resp_failure, + $resp_failure, + $resp_failure, + $resp_failure, + $resp_failure, + ); + +my $tests = 4 * @test_strings; +my $vars = Apache::Test::vars(); +my $module = 'default'; +my $cycle = 0; + +plan tests => $tests, ['eat_post']; + +print "testing $module\n"; + +for my $data (@test_strings) { + for my $request_uri (@req_strings) { + my $sock = Apache::TestRequest::vhost_socket($module); + ok $sock; + + Apache::TestRequest::socket_trace($sock); + + $sock->print("POST $request_uri HTTP/1.0\r\n"); + $sock->print("Content-Length: $data\r\n"); + $sock->print("\r\n"); + $sock->print("\r\n"); + + # Read the status line + chomp(my $response = Apache::TestRequest::getline($sock) || ''); + $response =~ s/\s$//; + + # Tests with empty content-length have platform-specific behaviour + # until 2.1.0. + skip + $data eq "" && !have_min_apache_version('2.1.0') ? + "skipping tests with empty C-L for httpd < 2.1.0" : 0, + t_cmp($response, $resp_strings[$cycle], + "response codes POST for $request_uri with Content-Length: $data"); + + $cycle++; + + do { + chomp($response = Apache::TestRequest::getline($sock) || ''); + $response =~ s/\s$//; + } + while ($response ne ""); + } +} |