AnyEvent-XMPP
view release on metacpan or search on metacpan
t/z_05_muc2.t view on Meta::CPAN
my $sr_created = 0;
my $sr_pass_field = 0;
my $sr_config_ok = 0;
my $sjo_join_error_type = '';
my $sjop_error = '';
my $sjop_join = 0;
my $nick_info = {};
my $second = 0;
$cl->state (['two_accounts_ready'], step_join => {}, undef, sub {
$muc->join_room ($cl->{acc}->connection, $ROOM, "test1owner");
my $guard;
$guard = $muc->reg_cb (
enter => sub {
my ($muc, $room, $user) = @_;
if ($user->did_create_room) {
$sjr_created = 1;
$cl->{room} = $room;
$cl->state_done ('step_join_done');
} else {
$cl->finish;
}
undef $guard;
}, join_error => sub {
my ($muc, $room, $error) = @_;
$sjr_error = $error->string;
undef $guard;
}
);
});
my $room_cnt_after_leave;
$cl->state (['step_join_done'], step_rejoin => {}, undef, sub {
$cl->{room}->send_part ("rejoin");
my $guard;
$guard = $muc->reg_cb (
enter => sub {
my ($muc, $room, $user) = @_;
$cl->finish; # error!
undef $guard;
},
after_leave => sub {
my ($muc, $room) = @_;
$muc->join_room ($cl->{acc}->connection, $ROOM, "test1owner",
create_instant => 0);
},
leave => sub {
my ($muc, $room) = @_;
$room_cnt_after_leave = scalar ($muc->get_rooms ($cl->{acc}->connection));
},
locked => sub {
my ($muc, $room) = @_;
$cl->{room} = $room;
$sr_created = 1;
$room->request_configuration (sub {
my ($form, $error) = @_;
if ($form) {
if ($form->get_field ('muc#roomconfig_passwordprotectedroom')
&& $form->get_field ('muc#roomconfig_roomsecret')) {
$sr_pass_field = 1;
my $af = AnyEvent::XMPP::Ext::DataForm->new;
$af->make_answer_form ($form);
$af->set_field_value ('muc#roomconfig_passwordprotectedroom', 1);
$af->set_field_value ('muc#roomconfig_roomsecret', "abc123");
$af->clear_empty_fields;
$room->send_configuration ($af, sub {
my ($ok, $error) = @_;
if ($error) {
$sr_error = $error->string;
$cl->finish;
} else {
$sr_config_ok = 1;
$cl->state_done ('step_rejoin_done');
}
});
} else {
$cl->finish;
}
}
});
undef $guard;
},
join_error => sub {
my ($muc, $room, $error) = @_;
$sr_error = $error->string;
undef $guard;
$cl->finish;
}
);
});
$cl->state (['step_rejoin_done'], 'step_join_occ', {}, undef, sub {
$muc->join_room ($cl->{acc2}->connection, $ROOM, "test2user");
my $guard;
$guard = $muc->reg_cb (
enter => sub {
my ($muc, $room, $user) = @_;
undef $guard;
$cl->finish
},
join_error => sub {
my ($muc, $room, $error) = @_;
( run in 3.606 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )