Authen-SCRAM

 view release on metacpan or  search on metacpan

t/errors.t  view on Meta::CPAN

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 )