The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 9;

use_ok('PocketIO::Resource');

use PocketIO::Pool;

my $pool = PocketIO::Pool->new;
my $d    = PocketIO::Resource->new(pool => $pool);
my $cb   = sub { };

eval { $d->dispatch({REQUEST_METHOD => 'HEAD'}, $cb); };
ok($@);

eval { $d->dispatch({REQUEST_METHOD => 'GET', PATH_INFO => '/hello'}, $cb) };
ok($@);

$pool = PocketIO::Pool->new;
eval {
    PocketIO::Resource->new(pool => $pool)
      ->dispatch({REQUEST_METHOD => 'GET', PATH_INFO => '/1/websocket/123'},
        $cb);
};
ok($@);

my $res;
my $delayed =
  $d->dispatch({REQUEST_METHOD => 'POST', PATH_INFO => '/1/'}, $cb);
$delayed->(
    sub {
        $res = $_[0];
    }
);
is $res->[0], 200;
is_deeply $res->[1],
  [ 'Content-Type'   => 'text/plain',
    'Connection'     => 'keep-alive',
    'Content-Length' => 79,
  ];
like $res->[2]->[0],
  qr/^\d+:15:25:websocket,flashsocket,htmlfile,xhr-polling,jsonp-polling$/;

$pool    = PocketIO::Pool->new;
$delayed = PocketIO::Resource->new(
    pool              => $pool,
    heartbeat_timeout => 15,
    close_timeout     => 20
)->dispatch({REQUEST_METHOD => 'POST', PATH_INFO => '/1/'}, $cb);
$delayed->(
    sub {
        $res = $_[0];
    }
);
is $res->[0], 200;
like $res->[2]->[0],
  qr/^\d+:15:20:websocket,flashsocket,htmlfile,xhr-polling,jsonp-polling$/;