use strict; use warnings; use Test::More; use Class::Load qw( load_class ); use FindBin; use lib "$FindBin::Bin/lib"; my $t = load_class('Test::Business::CyberSource')->new; my $client = $t->resolve( service => '/client/object' ); my $cc = $t->resolve( service => '/helper/card', parameters => { expiration => { month => 5, year => 2010 }, }, ); is( $cc->expiration->year, 2010, 'expiration year' ); ok( $cc->is_expired, 'card expired' ); my $req0 = $t->resolve( service => '/request/authorization', parameters => { purchase_totals => $t->resolve( service => '/helper/purchase_totals', parameters => { total => 3000.00 }, # magic ACCEPT ), card => $cc, }, ); my $ret0 = $client->run_transaction( $req0 ); isa_ok( $ret0, 'Business::CyberSource::Response' ); ok ! $ret0->has_trace, 'does not have trace'; is( $ret0->is_accept, 0, 'success' ); is( $ret0->decision, 'REJECT', 'decision' ); is( $ret0->reason_code, 202, 'reason_code' ); is( $ret0->reason_text, 'Expired card. You might also receive this if the expiration date you ' . 'provided does not match the date the issuing bank has on file' , 'reason_text', ); done_testing;