DJabberd

 view release on metacpan or  search on metacpan

t/write-error-and-close.t  view on Meta::CPAN

#!/usr/bin/perl
use strict;
use Test::More tests => 5;
use lib 't/lib';

# enable ability to do djabberd:test IQ to break writes.
$ENV{DJABBERD_TEST_COMMANDS} = 1;

require 'djabberd-test.pl';

two_parties_one_server(sub {
    my ($pa, $pb) = @_;
    $pa->login;
    $pb->login;

    # now pa/pb send presence to become available resources
    $pa->send_xml("<presence/>");
    $pb->send_xml("<presence/>");

    # add ourself to our roster, so when we die, the server will send
    # us our own disconnect info, causing infinite recursion if server
    # isn't careful.
    $pa->subscribe_successfully($pa);

    # this will switch our writer in error-and-close mode.
    $pa->send_xml("<iq type='set' id='foo'><query xmlns='djabberd:test'>write error</query></iq>");
    # this could (cause the server to blow up)
    ok(!$pa->recv_xml(1.5), "didn't get an answer");

    # PB to self (see if server still alive)
    $pb->send_xml("<message type='chat' to='$pb'>Hello myself!</message>");
    like($pb->recv_xml, qr/Hello myself/, "pb got own message");


});



( run in 3.397 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )