POE-Component-Curl-Multi
view release on metacpan or search on metacpan
t/14_postexpect.t view on Meta::CPAN
#! /usr/bin/perl
# -*- perl -*-
# vim: ts=2 sw=2 filetype=perl expandtab
use strict;
use warnings;
use Test::More tests => 3;
use POE;
use POE::Component::Curl::Multi;
use POE::Component::Server::TCP;
use HTTP::Request::Common qw[POST];
use Socket;
my $json = '{"author":["Chris Williams"],"release_status":"stable","prereqs":{"develop":{"requires":{"Pod::Coverage::TrustPod":"0","Test::Pod":"1.41","Test::Pod::Coverage":"1.08"}},"runtime":{"requires":{"HTTP::Status":"5.811","POE":"1.312","HTTP::Re...
POE::Component::Curl::Multi->spawn(
Alias => 'ua',
Timeout => 2,
Agent => 'OleBiscuitBarrel/1.0',
);
# We are testing against a localhost server.
# Don't proxy, because localhost takes on new meaning.
BEGIN {
delete $ENV{HTTP_PROXY};
delete $ENV{http_proxy};
}
POE::Session->create(
inline_states => {
_start => sub {
my ($kernel) = $_[KERNEL];
$kernel->alias_set('Main');
# Spawn discard TCP server
POE::Component::Server::TCP->new (
Alias => 'Discard',
Address => '127.0.0.1',
Port => 0,
ClientFilter => 'POE::Filter::HTTPD',
ClientInput => sub {
my $input = $_[ARG0];
isa_ok( $input, 'HTTP::Request', 'We got a HTTP::Request' );
my $headers = $input->headers_as_string;
unlike( $headers, qr/Expect:/s, 'There is not an Expect header' );
}, # discard
Started => sub {
my ($kernel, $heap) = @_[KERNEL, HEAP];
my $port = (sockaddr_in($heap->{listener}->getsockname))[0];
$kernel->post('Main', 'set_port', $port);
}
);
},
set_port => sub {
my ($kernel, $port) = @_[KERNEL, ARG0];
my $url = "http://127.0.0.1:$port/";
my $req = POST $url,
Content_Type => 'application/json',
Accept => 'application/json',
Content => $json;
$kernel->post(ua => request => response => $req);
$kernel->delay(no_response => 10);
},
response => sub {
my ($kernel, $rspp) = @_[KERNEL, ARG1];
my $rsp = $rspp->[0];
$kernel->delay('no_response'); # Clear timer
ok($rsp->code == 408, "received error " . $rsp->code . " (wanted 408)");
$kernel->post(Discard => 'shutdown');
$kernel->post(ua => 'shutdown');
},
no_response => sub {
my $kernel = $_[KERNEL];
fail("didn't receive error 408");
$kernel->post(Discard => 'shutdown');
$kernel->post(ua => 'shutdown');
}
}
);
POE::Kernel->run;
( run in 1.151 second using v1.01-cache-2.11-cpan-71847e10f99 )