AnyEvent-HTTP-Message
view release on metacpan or search on metacpan
t/request.t view on Meta::CPAN
use strict;
use warnings;
use Test::More 0.88;
use lib 't/lib';
use AEHTTP_Tests;
my $mod = 'AnyEvent::HTTP::Request';
eval "require $mod" or die $@;
use AnyEvent::HTTP;
no warnings 'redefine';
local *AnyEvent::HTTP::http_request = sub ($$@) {
return $mod->new(@_);
};
use warnings;
# parse_args error
foreach my $args ( [], [1,2], [1,2,3,4] ){
is eval { $mod->parse_args(@$args) }, undef, 'wrong number of args';
like $@, qr/expects an odd number of arguments/, 'error message';
}
# basic request
{
my $cb = sub { 'ugly'.($_[0]||'') };
my $req = new_ok($mod, [
post => 'scheme://host/path',
persistent => 1,
timeout => 3,
body => 'rub a dub',
headers => {
User_Agent => 'Any-Thing/0.1',
'x-duck' => 'quack',
},
$cb,
]);
is $req->method, 'POST', 'request method';
is $req->uri, 'scheme://host/path', 'request uri';
is $req->body, 'rub a dub', 'request content';
is $req->content, 'rub a dub', 'content alias';
my $exp_headers = {
'user-agent' => 'Any-Thing/0.1',
'x-duck' => 'quack',
};
is_deeply $req->headers, $exp_headers, 'request headers';
is $req->header('User-Agent'), 'Any-Thing/0.1', 'single header';
my $exp_params = {
persistent => 1,
timeout => 3,
};
is_deeply $req->params, $exp_params, 'params include headers';
is $req->cb, $cb, 'callback';
is eval { $req->cb("body", {}); 1 }, undef, 'error calling cb with args';
like $@, qr/cb\(\) is a read-only accessor/, 'error message explains usage';
is eval { $req->respond_with(1, 2, 3); 1 }, undef, 'error calling respond_with using bad args';
like $@, qr/AnyEvent::HTTP::Response error: expects two arguments/, 'error message explains usage';
( run in 1.100 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )