The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use lib 't/lib';

use MyAdapter;
use MyCache;
use MyLog;

use Test::More tests => 7;

my $credentials  = {
    user => 'password'
};

my $adapter = MyAdapter->new(
    credentials => $credentials,
    log         => MyLog->new
);

ok( $adapter );

$adapter->callback( sub { undef } );

ok( $adapter->authenticate( 'user', 'password' ) );
like( $adapter->log->messages->[-1], qr/Successfully authenticated user 'user'/ );

$adapter->callback( sub { 1 } );

ok( $adapter->authenticate( 'user', 'password' ) );
like( $adapter->log->messages->[-1], qr/Callback returned a true value/ );

$adapter->callback( sub { 0 } );

ok( !$adapter->authenticate( 'user', 'password' ) );
like( $adapter->log->messages->[-1], qr/Callback returned a false value/ );