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 )