view mod_lib_ldap/dev/t/TestConnection.pm @ 4838:fd2e48d4ac94

mod_bookmarks2: Advertise XEP-0049 support In the case mod_private isn’t loaded, some clients (like poezio) won’t even attempt to use Private XML Storage unless this feature is advertised. This is on the domain JID and not on the account JID!
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sun, 26 Dec 2021 14:51:35 +0100
parents 07582b8aaf84
children
line wrap: on
line source

package TestConnection;

use strict;
use warnings;
use parent 'AnyEvent::XMPP::IM::Connection';

use 5.010;

our $HOST         = 'localhost';
our $TIMEOUT      = 5;
our %PASSWORD_FOR = (
    one   => '12345',
    two   => '23451',
    three => '34512',
    four  => '45123',
    five  => '51234',
    six   => '123456',
    seven => '1234567',
);

sub new {
    my ( $class, $username, %options ) = @_;

    my $cond  = AnyEvent->condvar;
    my $timer = AnyEvent->timer(
        after => $TIMEOUT,
        cb    => sub {
            $cond->send('timeout');
        },
    );

    my $self = $class->SUPER::new(
        username => $username,
        domain   => $HOST,
        password => $options{'password'} // $PASSWORD_FOR{$username},
        resource => 'test bot',
    );

    $self->reg_cb(error => sub {
        my ( undef, $error ) = @_;

        $cond->send($error->string);
    });

    bless $self, $class;

    $self->{'condvar'}       = $cond;
    $self->{'timeout_timer'} = $timer;

    $self->connect;

    return $self;
}

sub cond {
    my ( $self ) = @_;

    return $self->{'condvar'};
}

1;