Coro-Twiggy
view release on metacpan or search on metacpan
t/02-requests.t view on Meta::CPAN
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{application have to return an ARRAYREF}, 'message';
ok $env, 'PSGI application was called';
$env = undef;
$server->register_service(sub { ($env) = @_; ['abc'] });
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{wrong response}, 'message';
ok $env, 'PSGI application was called';
$env = undef;
$server->register_service(sub {
($env) = @_;
[200, ['Content-Type', 'text/plain'], ['test passed']]
});
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+200}, 'code';
like $resp, qr{test passed}, 'message';
ok $env, 'PSGI application was called';
my $started = AnyEvent::now();
$env = undef;
$server->register_service(sub {
($env) = @_;
Coro::AnyEvent::sleep .5;
[200, ['Content-Type', 'text/plain'], ['test passed']]
});
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+200}, 'code';
like $resp, qr{test passed}, 'message';
ok $env, 'PSGI application was called';
my $delay = AnyEvent::now() - $started;
cmp_ok $delay, '>=', 0.5, 'async process took more that 0.5 seconds';
$server->register_service(sub { die "пÑивеÑ" });
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
ok eval { utf8::decode $resp }, 'response was decoded';
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{пÑÐ¸Ð²ÐµÑ at}, 'message';
ok $env, 'PSGI application was called';
}
Coro::AnyEvent::sleep 0.5;
my ($resp, $env);
tcp_connect 'unix/', $socket, Coro::rouse_cb;
my $cs = Coro::rouse_wait;
ok !$cs, 'Socket was closed';
END {
if ($temp_dir) {
rmtree $temp_dir;
ok !-d $temp_dir, "!-d $temp_dir";
}
}
( run in 0.416 second using v1.01-cache-2.11-cpan-e93a5daba3e )