The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 4;
use lib 't/lib';
use lib 'lib';
BEGIN {  $ENV{LOGLEVEL} ||= "FATAL" }
BEGIN { require 'djabberd-test.pl' }

use DJabberd::Authen::UserLimit;

my $server = Test::DJabberd::Server->new(id => 1);

$server->start([
    DJabberd::RosterStorage::InMemoryOnly->new(),
    DJabberd::Authen::UserLimit->new(userlimit => 2),
    DJabberd::Authen::AllowedUsers->new(allowedusers => 'test1 test2 test3', policy => 'accept'),
    Test::DJabberd::Authen::StaticPasswordOverloaded->new(password => 'test'),
]);

my ($client1,$client2,$client3);
    
$client1 = Test::DJabberd::Client->new(server => $server, name => "test1");
$client2 = Test::DJabberd::Client->new(server => $server, name => "test2");
$client3 = Test::DJabberd::Client->new(server => $server, name => "test3");

$client1->login("test");
pass("Client logged in");

$client2->login("test");
pass("Client logged in");
eval {
    $client3->login("test");
};
like($@, qr/bad password/);

eval {
    $server = Test::DJabberd::Server->new(id => 2);
    $server->start([
        DJabberd::Authen::UserLimit->new(userlimit => 'invalid value'),
    ]);
};
like($@, qr/Not a number/);