AnyEvent-WebSocket-Server
view release on metacpan or search on metacpan
t/handshake.t view on Meta::CPAN
my ($conn, @other_results) = shift->recv;
push @got_other_results, @other_results;
$conn->on(finish => sub {
undef $conn;
$finish_cv->send;
});
});
};
my $port = $port_cv->recv;
my $client_conn = client_connection($cconfig, $port, "/HOGE");
$client_conn->close;
$finish_cv->recv;
is_deeply \@got_other_results, ["hoge", 256, "/HOGE"];
});
};
subtest "response with subprotocol", sub {
testlib::ConnConfig->for_all_ok_conn_configs(sub {
my ($cconfig) = @_;
my $s = AnyEvent::WebSocket::Server->new(
$cconfig->server_args,
handshake => sub {
my ($req, $res) = @_;
$res->subprotocol("mytest.subprotocol");
return $res;
}
);
my $finish_cv = AnyEvent->condvar;
my $port = start_passive_server($s, sub { $finish_cv->send })->recv;
my $raw_res = get_raw_response($cconfig, $port, "/hogehoge")->recv;
$finish_cv->recv;
note("Response:");
note($raw_res);
like $raw_res, qr{^HTTP/1\.[10] 101}i, "101 status line OK";
like $raw_res, qr{^Sec-WebSocket-Protocol\s*:\s*mytest\.subprotocol}im, "subprotocol is set OK";
});
};
subtest "raw response", sub {
testlib::ConnConfig->for_all_ok_conn_configs(sub {
my ($cconfig) = @_;
my $input_response = "This must be rejected by the client\r\n\r\n";
my $s = AnyEvent::WebSocket::Server->new(
$cconfig->server_args,
handshake => sub {
my ($req, $res) = @_;
return "This must be rejected by the client\r\n\r\n";
}
);
my $finish_cv = AnyEvent->condvar;
my $port = start_passive_server($s, sub { $finish_cv->send })->recv;
my $raw_res = get_raw_response($cconfig, $port, "/foobar")->recv;
$finish_cv->recv;
note("Response:");
note($raw_res);
is $raw_res, $input_response, "raw response OK";
});
};
handshake_error_case(
label => "throw exception",
handshake => sub { die "BOOM!" },
exp_error_pattern => qr/BOOM\!/,
);
handshake_error_case(
label => "no return",
handshake => sub { return () },
exp_error_pattern => qr/handshake response was undef/i,
);
done_testing;
( run in 1.312 second using v1.01-cache-2.11-cpan-39bf76dae61 )