%PDF- %PDF-
| Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Authen-SCRAM-0.011/t/ |
| Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Authen-SCRAM-0.011/t/errors.t |
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",
"r=${nonce}abc,s=dlkfakdf,i=",
"r=${nonce}abc,i=1000,s=dsfadks",
);
#>>>
for my $bad (@bad_messages) {
$client->first_msg;
like(
exception { $client->final_msg($bad) },
qr/SCRAM server-first-message could not be parsed/,
"parse error: <$bad>",
);
}
#<<< No perltidy
my @bad_nonce = (
"r=sadkasdllk,s=akdjad,i=99",
"r=$nonce,s=akdjad,i=99",
);
#>>>
for my $bad (@bad_nonce) {
$client->first_msg;
like(
exception { $client->final_msg($bad) },
qr/SCRAM server-first-message nonce invalid/,
"nonce error: <$bad>",
);
}
#<<< No perltidy
my @bad_iters = (
"r=${nonce}abc,s=def,i=-1000",
"r=${nonce}abc,s=def,i=-1.00",
"r=${nonce}abc,s=def,i=afdkj",
);
#>>>
for my $bad (@bad_iters) {
$client->first_msg;
like(
exception { $client->final_msg($bad) },
qr/SCRAM iteration parameter '[^']+' invalid/,
"iterator error: <$bad>",
);
}
};
subtest "unsupported features" => sub {
my $client = get_client;
$client->first_msg;
like(
exception { $client->final_msg("m=1234,r=adlskjas,s=ldkjfalfdj,i=1000") },
qr/mandatory extension 'm=1234', but we do not support it/,
"mandatory extension receiving server-first-message",
);
};
done_testing;
#
# This file is part of Authen-SCRAM
#
# This software is Copyright (c) 2014 by David Golden.
#
# This is free software, licensed under:
#
# The Apache License, Version 2.0, January 2004
#
# vim: ts=4 sts=4 sw=4 et: