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 )