diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-09-02 10:20:59 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-09-02 10:53:31 -0400 |
commit | 31a50c75661e9bb58026643cecc11e448544e80e (patch) | |
tree | 0546aff486e918655af01307f59a3eb41be85fbd /t | |
parent | 9b83105e5c42d3b9cb39e8f43c0e80975e2622dd (diff) | |
download | web-request-31a50c75661e9bb58026643cecc11e448544e80e.tar.gz web-request-31a50c75661e9bb58026643cecc11e448544e80e.zip |
make sure we buffer the entire input (backported from Plack a96a5b6)
otherwise, the app may read things before the Web::Request instance
does, and if the app doesn't buffer the input, then that data would not
be seen
Diffstat (limited to 't')
-rw-r--r-- | t/content.t | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/t/content.t b/t/content.t index aa39a1e..eb636fd 100644 --- a/t/content.t +++ b/t/content.t @@ -6,9 +6,20 @@ use Plack::Test; use Web::Request; +my ($content_before, $content_after); + my $app = sub { - my $req = Web::Request->new_from_env(shift); - is $req->content, 'body'; + my $env = shift; + + my $req = Web::Request->new_from_env($env); + $content_before = $req->content; + + # emulate other PSGI apps that reads from input, but not reset + $env->{'psgi.input'}->read(my($dummy), $env->{CONTENT_LENGTH}, 0); + + $req = Web::Request->new_from_env($env); + $content_after = $req->content; + $req->new_response(status => 200)->finalize; }; @@ -19,7 +30,10 @@ test_psgi $app, sub { $req->content("body"); $req->content_type('text/plain'); $req->content_length(4); - $cb->($req); + my $res = $cb->($req); + ok($res->is_success) || diag $res->content; + is $content_before, "body"; + is $content_after, "body"; }; done_testing; |