Debian lenny version packages
[pkg-perl] / deb-src / libwww-perl / libwww-perl-5.813 / t / base / message-parts.t
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Test qw(plan ok);
5 plan tests => 39;
6
7 use HTTP::Message;
8 use HTTP::Request::Common qw(POST);
9
10 my $m = HTTP::Message->new;
11
12 ok(ref($m->headers), "HTTP::Headers");
13 ok($m->headers_as_string, "");
14 ok($m->content, "");
15 ok(j($m->parts), "");
16 ok($m->as_string, "\n");
17
18 my $m_clone = $m->clone;
19 $m->push_header("Foo", 1);
20 $m->add_content("foo");
21
22 ok($m_clone->as_string, "\n");
23 ok($m->headers_as_string, "Foo: 1\n");
24 ok($m->header("Foo"), 1);
25 ok($m->as_string, "Foo: 1\n\nfoo\n");
26 ok($m->as_string("\r\n"), "Foo: 1\r\n\r\nfoo");
27 ok(j($m->parts), "");
28
29 $m->content_type("message/foo");
30 $m->content(<<EOT);
31 H1: 1
32 H2: 2
33   3
34 H3:  abc
35
36 FooBar
37 EOT
38
39 my @parts = $m->parts;
40 ok(@parts, 1);
41 my $m2 = $parts[0];
42 ok(ref($m2), "HTTP::Message");
43
44 ok($m2->header("h1"), 1);
45 ok($m2->header("h2"), "2\n  3");
46 ok($m2->header("h3"), " abc");
47 ok($m2->content, "FooBar\n");
48 ok($m2->as_string, $m->content);
49 ok(j($m2->parts), "");
50
51 $m = POST("http://www.example.com",
52           Content_Type => 'form-data',
53           Content => [ foo => 1, bar => 2 ]);
54 ok($m->content_type, "multipart/form-data");
55 @parts = $m->parts;
56 ok(@parts, 2);
57 ok($parts[0]->header("Content-Disposition"), 'form-data; name="foo"');
58 ok($parts[0]->content, 1);
59 ok($parts[1]->header("Content-Disposition"), 'form-data; name="bar"');
60 ok($parts[1]->content, 2);
61
62 $m = HTTP::Message->new;
63 $m->content_type("message/http");
64 $m->content(<<EOT);
65 GET / HTTP/1.0
66 Host: example.com
67
68 How is this?
69 EOT
70
71 @parts = $m->parts;
72 ok(@parts, 1);
73 ok($parts[0]->method, "GET");
74 ok($parts[0]->uri, "/");
75 ok($parts[0]->protocol, "HTTP/1.0");
76 ok($parts[0]->header("Host"), "example.com");
77 ok($parts[0]->content, "How is this?\n");
78
79 $m = HTTP::Message->new;
80 $m->content_type("message/http");
81 $m->content(<<EOT);
82 HTTP/1.1 200 OK
83 Content-Type : text/html
84
85 <H1>Hello world!</H1>
86 EOT
87
88 @parts = $m->parts;
89 ok(@parts, 1);
90 ok($parts[0]->code, 200);
91 ok($parts[0]->message, "OK");
92 ok($parts[0]->protocol, "HTTP/1.1");
93 ok($parts[0]->content_type, "text/html");
94 ok($parts[0]->content, "<H1>Hello world!</H1>\n");
95
96 $m->parts(HTTP::Request->new("GET", "http://www.example.com"));
97 ok($m->as_string, "Content-Type: message/http\n\nGET http://www.example.com\r\n\r\n");
98
99 $m = HTTP::Request->new("PUT", "http://www.example.com");
100 $m->parts(HTTP::Message->new([Foo => 1], "abc\n"));
101 ok($m->as_string, <<EOT);
102 PUT http://www.example.com
103 Content-Type: multipart/mixed; boundary=xYzZY
104
105 --xYzZY\r
106 Foo: 1\r
107 \r
108 abc
109 \r
110 --xYzZY--\r
111 EOT
112
113 sub j { join(":", @_) }