Mercurial > hg > nginx-tests
diff dav_chunked.t @ 240:462d89f5732a
Tests: request body and chunked transfer encoding tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 09 Nov 2012 07:46:37 +0400 |
parents | |
children | 8f280348d76f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dav_chunked.t Fri Nov 09 07:46:37 2012 +0400 @@ -0,0 +1,119 @@ +#!/usr/bin/perl + +# (C) Maxim Dounin + +# Tests for nginx dav module with chunked request body. + +############################################################################### + +use warnings; +use strict; + +use Test::More; +use Socket qw/ CRLF /; + +BEGIN { use FindBin; chdir($FindBin::Bin); } + +use lib 'lib'; +use Test::Nginx; + +############################################################################### + +select STDERR; $| = 1; +select STDOUT; $| = 1; + +my $t = Test::Nginx->new()->has(qw/http dav/)->plan(6); + +$t->write_file_expand('nginx.conf', <<'EOF'); + +%%TEST_GLOBALS%% + +daemon off; + +events { +} + +http { + %%TEST_GLOBALS_HTTP%% + + server { + listen 127.0.0.1:8080; + server_name localhost; + + client_header_buffer_size 1k; + client_body_buffer_size 2k; + + location / { + dav_methods PUT; + } + } +} + +EOF + +$t->run(); + +############################################################################### + +TODO: { +local $TODO = 'not yet'; + +my $r; + +$r = http(<<EOF); +PUT /file HTTP/1.1 +Host: localhost +Connection: close +Transfer-Encoding: chunked + +a +1234567890 +0 + +EOF + +like($r, qr/201 Created.*(Content-Length|\x0d\0a0\x0d\x0a)/ms, 'put chunked'); +is(read_file($t->testdir() . '/file'), '1234567890', 'put content'); + +$r = http(<<EOF); +PUT /file HTTP/1.1 +Host: localhost +Connection: close +Transfer-Encoding: chunked + +0 + +EOF + +like($r, qr/204 No Content/, 'put chunked empty'); +is(read_file($t->testdir() . '/file'), '', 'put empty content'); + +my $body = ('a' . CRLF . '1234567890' . CRLF) x 1024 . '0' . CRLF . CRLF; + +$r = http(<<EOF); +PUT /file HTTP/1.1 +Host: localhost +Connection: close +Transfer-Encoding: chunked + +$body +EOF + +like($r, qr/204 No Content/, 'put chunked big'); +is(read_file($t->testdir() . '/file'), '1234567890' x 1024, 'put big content'); + +} + +############################################################################### + +sub read_file { + my ($file) = @_; + open FILE, $file + or return "$!"; + local $/; + my $content = <FILE>; + close FILE; + return $content; +} + +###############################################################################