diff options
Diffstat (limited to 'tests/request.t')
-rwxr-xr-x | tests/request.t | 117 |
1 files changed, 116 insertions, 1 deletions
diff --git a/tests/request.t b/tests/request.t index a1ff4db0..a073a7c1 100755 --- a/tests/request.t +++ b/tests/request.t @@ -8,7 +8,7 @@ BEGIN { use strict; use IO::Socket; -use Test::More tests => 52; +use Test::More tests => 59; use LightyTest; my $tf = LightyTest->new(); @@ -119,6 +119,121 @@ EOF $t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 417 } ]; ok($tf->handle_http($t) == 0, 'Continue, Expect'); +# note Transfer-Encoding: chunked tests will fail with 411 Length Required if +# server.stream-request-body != 0 in lighttpd.conf +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +a +0123456789 +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked, lc hex'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +A +0123456789 +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked, uc hex'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +a +0123456789 +0 +Test-Trailer: testing + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked, with trailer'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +a; comment +0123456789 +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 200 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked, chunked header comment'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +az +0123456789 +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 400 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked; bad chunked header'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +a +0123456789xxxxxxxx +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 400 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked; mismatch chunked header size and chunked data size'); + +$t->{REQUEST} = ( <<EOF +POST /get-post-len.pl HTTP/1.1 +Host: www.example.org +Connection: close +Content-Type: application/x-www-form-urlencoded +Transfer-Encoding: chunked + +a ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +0123456789 +0 + +EOF + ); +$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.1', 'HTTP-Status' => 400 } ]; +ok($tf->handle_http($t) == 0, 'POST via Transfer-Encoding: chunked; chunked header too long'); + ## ranges $t->{REQUEST} = ( <<EOF |