Finance-Bank-Natwest

 view release on metacpan or  search on metacpan

t/callback.t  view on Meta::CPAN

            croak "Invalid id, stopped";
        }
    ], [
        [ map { [$_] } 1..19 ],
        sub {
            $used_callback = 1;
            my $id = shift;

            my @invalid_details = (
                { },
                { customer_no => '0101790001' },
                { password => 'Password' },
                { pin => '4321' },
                { customer_no => '0101790001', password => 'Password' },
                { customer_no => '0101790001', pin => '4321' },
                { customer_no => '01017900010', 
                  password => 'Password', pin => '4321' },
                { customer_no => '010179000', 
                  password => 'Password', pin => '4321' },
                { customer_no => '0101790001', 
                  password => 'Password', pin => '432' },
                { customer_no => '0101790001', 
                  password => 'Password', pin => '43210' },
                { customer_no => '0101790001', 
                  password => 'Short', pin => '4321' },
                { customer_no => '0101790001', 
                  password => 'Much too long password', pin => '4321' },
                { dob => '010179', uid => '00010', 
                  password => 'Password', pin => '4321' },
                { dob => '010179', uid => '000', 
                  password => 'Password', pin => '4321' },
                { dob => '0101790', uid => '0001', 
                  password => 'Password', pin => '4321' },
                { dob => '01017', uid => '0001', 
                  password => 'Password', pin => '4321' },
                { customer_no => '01017900010', dob => '010179', uid => '00010',
                  password => 'Password', pin => '4321' },
                { customer_no => '01017900010', dob => '010179', 
                  password => 'Password', pin => '4321' },
                { customer_no => '01017900010', uid => '00010', 
                  password => 'Password', pin => '4321' }
            );

            return $invalid_details[$id];
        }
    ]
);

foreach my $callback_info (@callbacks) {
    my $provider = Finance::Bank::Natwest::CredentialsProvider::Callback->new(
        callback => $callback_info->[1] );

    for my $callback (@{$callback_info->[0]}) {
        my $callback_id = $callback->[0];
        my $callback_identity = $callback->[1];
        my $callback_pinpass = $callback->[2];

        if (!defined $callback_identity) {
            dies_ok {
                $provider->get_start( id => $callback_id );
            } 'Invalid id or invalid credentials: expected to fail';
        } else {
            $provider->get_start( id => $callback_id );

            is_deeply( $provider->get_identity(), $callback_identity,
                'Got expected identity' );

            is_deeply( $provider->get_pinpass( 
                [0..@{$callback_pinpass->{pin}}-1],
                [0..@{$callback_pinpass->{password}}-1] ),
                $callback_pinpass, 
                'Got expected pin and pass' );

            is_deeply( $provider->get_pinpass(
                [-1,0,scalar @{$callback_pinpass->{pin}}],
                [-1,0,scalar @{$callback_pinpass->{password}}] ),
                { pin => [$callback_pinpass->{pin}[-1],
                          $callback_pinpass->{pin}[0],
                          undef],
                  password => [$callback_pinpass->{password}[-1],
                               $callback_pinpass->{password}[0],
                               undef] },
                'Got expected pin and pass' );

            $provider->get_stop();

            $used_callback = 0;
            $provider->get_start( id => $callback_id );
            ok( $used_callback, 'used callback' );
            $provider->get_stop();
        }
    }

    undef $provider;
}

foreach my $callback_info (@callbacks) {
    my $provider = Finance::Bank::Natwest::CredentialsProvider::Callback->new(
        callback => $callback_info->[1], cache=>1 );

    for my $callback (@{$callback_info->[0]}) {
        my $callback_id = $callback->[0];
        my $callback_identity = $callback->[1];
        my $callback_pinpass = $callback->[2];
    
        if (defined $callback_identity) {
            $used_callback = 0;
            $provider->get_start( id => $callback_id );

            ok( $used_callback, 'used callback' );

            $provider->get_stop();

            $used_callback = 0;
            $provider->get_start( id => $callback_id );
            
            ok (!$used_callback, 'used cached values' );

            $provider->get_stop();
        }
    }



( run in 0.528 second using v1.01-cache-2.11-cpan-524268b4103 )