Authen-SCRAM
view release on metacpan or search on metacpan
use 5.008001;
use strict;
use warnings;
use Test::More 0.96;
use Test::FailWarnings -allow_deps => 1;
use Test::Fatal;
binmode( Test::More->builder->$_, ":utf8" )
for qw/output failure_output todo_output/;
use lib 't/lib';
use TestSCRAM qw/get_client get_server/;
subtest "constructors" => sub {
like(
exception { get_client( digest => 'MD5' ) },
qr/did not pass type constraint/,
"client: bad digest type throws exception"
);
like(
exception { get_server( digest => 'MD5' ) },
qr/did not pass type constraint/,
"server: bad digest type throws exception"
);
};
subtest "bad client first message" => sub {
my $server = get_server;
#<<< No perltidy
my @bad_messages = (
'',
'n,,',
',,n=user,r=salt',
'x,,n=user,r=salt',
'n,,user',
'n,,=user',
'n,,n=user',
'n,,a=b,c=d,d=3',
'n,,r=salt,n=user',
);
#>>>
for my $bad (@bad_messages) {
like(
exception { $server->first_msg($bad) },
qr/SCRAM client-first-message could not be parsed/,
"parse error: <$bad>",
);
}
};
subtest "bad server first message" => sub {
my $client = get_client( _nonce_generator => sub { "fyko+d2lbbFgONRv9qkxdawL" } );
$client->first_msg;
my $nonce = $client->_session->{r};
#<<< No perltidy
my @bad_messages = (
'',
",r=${nonce}abc,i=99",
"r=${nonce}abc,s=dlkfakdf",
( run in 1.753 second using v1.01-cache-2.11-cpan-54e63673c56 )