[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