[Jifty-commit] r5994 - Net-Jifty/trunk/t
Jifty commits
jifty-commit at lists.jifty.org
Mon Nov 17 09:37:24 EST 2008
Author: ruz
Date: Mon Nov 17 09:37:21 2008
New Revision: 5994
Added:
Net-Jifty/trunk/t/006-uploads.t
Log:
* add tests for new feature
Added: Net-Jifty/trunk/t/006-uploads.t
==============================================================================
--- (empty file)
+++ Net-Jifty/trunk/t/006-uploads.t Mon Nov 17 09:37:21 2008
@@ -0,0 +1,149 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More tests => 39;
+use lib 't/lib';
+use Net::Jifty::Test;
+
+my $j = Net::Jifty::Test->new();
+$j->ua->clear();
+
+$j->get("ping");
+my ($name, $args) = $j->ua->next_call();
+is($name, 'get', 'ua->get method called');
+is($args->[1], 'http://jifty.org/=/ping.yml', 'correct URL');
+
+# all is set, no more fields, simple tests
+{
+ $j->ua->clear;
+ $j->post(['foo'], file => {
+ content => 'stub',
+ filename => 'test.txt',
+ content_type => 'text/plain',
+ } );
+
+ ($name, $args) = $j->ua->next_call();
+ is($name, 'request', 'ua->get method called');
+
+ my $req = $args->[1];
+ isa_ok($req, 'HTTP::Request');
+ is( $req->content_type, 'multipart/form-data', "multipart form data" );
+
+ my @parts = $req->parts;
+ is( scalar @parts, 1, "has one part" );
+ is $parts[0]->content_type, 'text/plain', 'correct type of the part';
+ is $parts[0]->header('Content-Disposition'),
+ 'form-data; name="file"; filename="test.txt"',
+ 'checked disposition';
+
+ is $parts[0]->content, 'stub', 'checked content';
+}
+
+# no type - defaults to octet-stream
+{
+ $j->ua->clear;
+ $j->post(['foo'], file => {
+ content => 'stub',
+ filename => 'test.txt',
+ } );
+
+ ($name, $args) = $j->ua->next_call();
+ is($name, 'request', 'ua->get method called');
+
+ my $req = $args->[1];
+ isa_ok($req, 'HTTP::Request');
+ is( $req->content_type, 'multipart/form-data', "multipart form data" );
+
+ my @parts = $req->parts;
+ is( scalar @parts, 1, "has one part" );
+ is $parts[0]->content_type, 'application/octet-stream', 'correct type of the part';
+ is $parts[0]->header('Content-Disposition'),
+ 'form-data; name="file"; filename="test.txt"',
+ 'checked disposition';
+
+ is $parts[0]->content, 'stub', 'checked content';
+}
+
+# mix with another fields
+{
+ $j->ua->clear;
+ $j->post(['foo'],
+ file => {
+ content => 'stub',
+ filename => 'test.txt',
+ },
+ some_arg => 'some_value',
+ );
+
+ ($name, $args) = $j->ua->next_call();
+ is($name, 'request', 'ua->get method called');
+
+ my $req = $args->[1];
+ isa_ok($req, 'HTTP::Request');
+ is( $req->content_type, 'multipart/form-data', "multipart form data" );
+
+ my @parts = $req->parts;
+ is( scalar @parts, 2, "has two parts" );
+
+ is $parts[0]->content_type, 'application/octet-stream', 'correct type of the part';
+ is $parts[0]->header('Content-Disposition'),
+ 'form-data; name="file"; filename="test.txt"',
+ 'checked disposition';
+ is $parts[0]->content, 'stub', 'checked content';
+
+ is $parts[1]->header('Content-Disposition'),
+ 'form-data; name="some_arg"',
+ 'checked disposition';
+ is $parts[1]->content, 'some_value', 'checked content';
+}
+
+# non ascii file name
+{
+ $j->ua->clear;
+ $j->post(['foo'], file => {
+ content => 'stub',
+ filename => "\x{442}.bin",
+ } );
+
+ ($name, $args) = $j->ua->next_call();
+ is($name, 'request', 'ua->get method called');
+
+ my $req = $args->[1];
+ isa_ok($req, 'HTTP::Request');
+ is( $req->content_type, 'multipart/form-data', "multipart form data" );
+
+ my @parts = $req->parts;
+ is( scalar @parts, 1, "has one part" );
+
+ is $parts[0]->content_type, 'application/octet-stream', 'correct type of the part';
+ is $parts[0]->header('Content-Disposition'),
+ 'form-data; name="file"; filename="=?UTF-8?Q?=D1=82?=.bin"',
+ 'checked disposition';
+ is $parts[0]->content, 'stub', 'checked content';
+}
+
+# non ascii input type
+{
+ $j->ua->clear;
+ $j->post(['foo'], "\x{442}" => {
+ content => 'stub',
+ filename => "\x{442}.bin",
+ } );
+
+ ($name, $args) = $j->ua->next_call();
+ is($name, 'request', 'ua->get method called');
+
+ my $req = $args->[1];
+ isa_ok($req, 'HTTP::Request');
+ is( $req->content_type, 'multipart/form-data', "multipart form data" );
+
+ my @parts = $req->parts;
+ is( scalar @parts, 1, "has one part" );
+
+ is $parts[0]->content_type, 'application/octet-stream', 'correct type of the part';
+ is $parts[0]->header('Content-Disposition'),
+ 'form-data; name="=?UTF-8?Q?=D1=82?="; filename="=?UTF-8?Q?=D1=82?=.bin"',
+ 'checked disposition';
+ is $parts[0]->content, 'stub', 'checked content';
+}
+
More information about the Jifty-commit
mailing list