|
Packit |
a09cf7 |
use strict;
|
|
Packit |
a09cf7 |
use warnings;
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
use Test::More;
|
|
Packit |
a09cf7 |
plan tests => 47;
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
use HTTP::Message;
|
|
Packit |
a09cf7 |
use HTTP::Request::Common qw(POST);
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
my $m = HTTP::Message->new;
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
is(ref($m->headers), "HTTP::Headers");
|
|
Packit |
a09cf7 |
is($m->headers_as_string, "");
|
|
Packit |
a09cf7 |
is($m->content, "");
|
|
Packit |
a09cf7 |
is(j($m->parts), "");
|
|
Packit |
a09cf7 |
is($m->as_string, "\n");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
my $m_clone = $m->clone;
|
|
Packit |
a09cf7 |
$m->push_header("Foo", 1);
|
|
Packit |
a09cf7 |
$m->add_content("foo");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
is($m_clone->as_string, "\n");
|
|
Packit |
a09cf7 |
is($m->headers_as_string, "Foo: 1\n");
|
|
Packit |
a09cf7 |
is($m->header("Foo"), 1);
|
|
Packit |
a09cf7 |
is($m->as_string, "Foo: 1\n\nfoo\n");
|
|
Packit |
a09cf7 |
is($m->as_string("\r\n"), "Foo: 1\r\n\r\nfoo");
|
|
Packit |
a09cf7 |
is(j($m->parts), "");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m->content_type("message/foo");
|
|
Packit |
a09cf7 |
$m->content(<
|
|
Packit |
a09cf7 |
H1: 1
|
|
Packit |
a09cf7 |
H2: 2
|
|
Packit |
a09cf7 |
3
|
|
Packit |
a09cf7 |
H3: abc
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
FooBar
|
|
Packit |
a09cf7 |
EOT
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
my @parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 1);
|
|
Packit |
a09cf7 |
my $m2 = $parts[0];
|
|
Packit |
a09cf7 |
is(ref($m2), "HTTP::Message");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
is($m2->header("h1"), 1);
|
|
Packit |
a09cf7 |
is($m2->header("h2"), "2\n 3");
|
|
Packit |
a09cf7 |
is($m2->header("h3"), " abc");
|
|
Packit |
a09cf7 |
is($m2->content, "FooBar\n");
|
|
Packit |
a09cf7 |
is($m2->as_string, $m->content);
|
|
Packit |
a09cf7 |
is(j($m2->parts), "");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m = POST("http://www.example.com",
|
|
Packit |
a09cf7 |
Content_Type => 'form-data',
|
|
Packit |
a09cf7 |
Content => [ foo => 1, bar => 2 ]);
|
|
Packit |
a09cf7 |
is($m->content_type, "multipart/form-data");
|
|
Packit |
a09cf7 |
@parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 2);
|
|
Packit |
a09cf7 |
is($parts[0]->header("Content-Disposition"), 'form-data; name="foo"');
|
|
Packit |
a09cf7 |
is($parts[0]->content, 1);
|
|
Packit |
a09cf7 |
is($parts[1]->header("Content-Disposition"), 'form-data; name="bar"');
|
|
Packit |
a09cf7 |
is($parts[1]->content, 2);
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m = HTTP::Message->new;
|
|
Packit |
a09cf7 |
$m->content_type("message/http");
|
|
Packit |
a09cf7 |
$m->content(<
|
|
Packit |
a09cf7 |
GET / HTTP/1.0
|
|
Packit |
a09cf7 |
Host: example.com
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
How is this?
|
|
Packit |
a09cf7 |
EOT
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
@parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 1);
|
|
Packit |
a09cf7 |
is($parts[0]->method, "GET");
|
|
Packit |
a09cf7 |
is($parts[0]->uri, "/");
|
|
Packit |
a09cf7 |
is($parts[0]->protocol, "HTTP/1.0");
|
|
Packit |
a09cf7 |
is($parts[0]->header("Host"), "example.com");
|
|
Packit |
a09cf7 |
is($parts[0]->content, "How is this?\n");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m = HTTP::Message->new;
|
|
Packit |
a09cf7 |
$m->content_type("message/http");
|
|
Packit |
a09cf7 |
$m->content(<
|
|
Packit |
a09cf7 |
HTTP/1.1 200 is
|
|
Packit |
a09cf7 |
Content-Type : text/html
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
Hello world!
|
|
Packit |
a09cf7 |
EOT
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
@parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 1);
|
|
Packit |
a09cf7 |
is($parts[0]->code, 200);
|
|
Packit |
a09cf7 |
is($parts[0]->message, "is");
|
|
Packit |
a09cf7 |
is($parts[0]->protocol, "HTTP/1.1");
|
|
Packit |
a09cf7 |
is($parts[0]->content_type, "text/html");
|
|
Packit |
a09cf7 |
is($parts[0]->content, "Hello world!\n");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m->parts(HTTP::Request->new("GET", "http://www.example.com"));
|
|
Packit |
a09cf7 |
is($m->as_string, "Content-Type: message/http\n\nGET http://www.example.com\r\n\r\n");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m = HTTP::Request->new("PUT", "http://www.example.com");
|
|
Packit |
a09cf7 |
$m->parts(HTTP::Message->new([Foo => 1], "abc\n"), HTTP::Message->new([Bar => 2], "def"));
|
|
Packit |
a09cf7 |
is($m->as_string, <
|
|
Packit |
a09cf7 |
PUT http://www.example.com
|
|
Packit |
a09cf7 |
Content-Type: multipart/mixed; boundary=xYzZY
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
--xYzZY\r
|
|
Packit |
a09cf7 |
Foo: 1\r
|
|
Packit |
a09cf7 |
\r
|
|
Packit |
a09cf7 |
abc
|
|
Packit |
a09cf7 |
\r
|
|
Packit |
a09cf7 |
--xYzZY\r
|
|
Packit |
a09cf7 |
Bar: 2\r
|
|
Packit |
a09cf7 |
\r
|
|
Packit |
a09cf7 |
def\r
|
|
Packit |
a09cf7 |
--xYzZY--\r
|
|
Packit |
a09cf7 |
EOT
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m->content(<
|
|
Packit |
a09cf7 |
--xYzZY
|
|
Packit |
a09cf7 |
Content-Length: 4
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
abcd
|
|
Packit |
a09cf7 |
--xYzZY--
|
|
Packit |
a09cf7 |
EOT
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
@parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 1);
|
|
Packit |
a09cf7 |
is($parts[0]->content_length, 4);
|
|
Packit |
a09cf7 |
is($parts[0]->content, "abcd");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
$m->content("
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
--xYzZY
|
|
Packit |
a09cf7 |
Content-Length: 4
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
efgh
|
|
Packit |
a09cf7 |
--xYzZY
|
|
Packit |
a09cf7 |
Content-Length: 3
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
ijk
|
|
Packit |
a09cf7 |
--xYzZY--");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
@parts = $m->parts;
|
|
Packit |
a09cf7 |
is(@parts, 2);
|
|
Packit |
a09cf7 |
is($parts[0]->content_length, 4);
|
|
Packit |
a09cf7 |
is($parts[0]->content, "efgh");
|
|
Packit |
a09cf7 |
is($parts[1]->content_length, 3);
|
|
Packit |
a09cf7 |
is($parts[1]->content, "ijk");
|
|
Packit |
a09cf7 |
|
|
Packit |
a09cf7 |
sub j { join(":", @_) }
|