diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-07-18 16:22:08 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-07-18 16:22:08 -0500 |
commit | b5d66ba6e274eed251da951bb943b9ff67765290 (patch) | |
tree | 8b468f4ec6279a2d218f44d69a530c2a2476f1fc /t/upload.t | |
parent | bc67313aa7191255f4123ae8d89f890e2f0772bc (diff) | |
download | web-request-b5d66ba6e274eed251da951bb943b9ff67765290.tar.gz web-request-b5d66ba6e274eed251da951bb943b9ff67765290.zip |
import the Plack::Request test suite
Diffstat (limited to 't/upload.t')
-rw-r--r-- | t/upload.t | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/t/upload.t b/t/upload.t new file mode 100644 index 0000000..a024b3d --- /dev/null +++ b/t/upload.t @@ -0,0 +1,61 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Plack::Test; + +use HTTP::Request::Common; +use Web::Request; + +my @temp_files = (); + +my $app = sub { + my $env = shift; + my $req = Web::Request->new_from_env($env); + + isa_ok $req->uploads->{foo}, 'HASH'; + is $req->uploads->{foo}->{filename}, 'foo2.txt'; + + my @files = $req->upload('foo'); + is scalar(@files), 2; + is $files[0]->filename, 'foo1.txt'; + is $files[1]->filename, 'foo2.txt'; + ok -e $files[0]->tempname; + + is join(', ', sort { $a cmp $b } $req->upload()), 'bar, foo'; + + for (qw(foo bar)) { + my $temp_file = $req->upload($_)->path; + ok -f $temp_file; + push @temp_files, $temp_file; + } + + my $res = $req->new_response(status => 200); + + undef $req; # Simulate when we instantiate Web::Request multiple times + + # redo the test with the same $env + $req = Web::Request->new_from_env($env); + @files = $req->upload('foo'); + is scalar(@files), 2; + is $files[0]->filename, 'foo1.txt'; + ok -e $files[0]->tempname; + + $res->finalize; +}; + +test_psgi $app, sub { + my $cb = shift; + + $cb->(POST "/", Content_Type => 'form-data', Content => [ + foo => [ "t/data/foo1.txt" ], + foo => [ "t/data/foo2.txt" ], + bar => [ "t/data/foo1.txt" ], + ]); +}; + +# Check if the temp files got cleaned up properly +ok !-f $_ for @temp_files; + +done_testing; + |