Cleanup for public release
[Business-OnlinePayment-NMI.git] / t / 01-cc.t
1 use Test::More tests => 6;
2
3 use Business::OnlinePayment;
4
5 my %defaults = (
6   name       => 'Joe Tester',
7   address    => '888',
8   city       => 'Nowhere',
9   state      => 'CA',
10   zip        => '77777',
11   phone      => '510-555-0021',
12   email      => 'joe@example.com',
13   description => 'Business::OnlinePayment::NMI Test',
14
15   action     => 'Normal Authorization',
16   card_number => '5431111111111111',
17   expiration => '10/10',
18   amount     => '12.00',
19   );
20
21 # SALE
22 my %content = %defaults;
23 my $ordernum = ok_test(\%content, 'credit card sale');
24
25 # REFUND
26 %content = ( 
27   action => 'Credit', 
28   order_number => $ordernum,
29   amount => '6.00',
30 );
31 ok_test(\%content, 'credit card refund');
32
33 # AUTH/CAPTURE
34 %content = %defaults;
35 $content{'action'} = 'Authorization Only';
36 $ordernum = ok_test(\%content, 'credit card auth');
37
38 %content = (
39   action => 'Post Authorization',
40   order_number => $ordernum,
41   amount => '12.00',
42 );
43 ok_test(\%content, 'credit card capture');
44
45 #VOID
46 %content = (
47   action => 'Void',
48   order_number => $ordernum,
49 );
50 ok_test(\%content, 'credit card void');
51
52 #FAILURE
53 %content = %defaults;
54 $content{amount} = '0.10'; # amounts < 1.00 are declined on the demo account
55 $content{fail} = 1;
56 ok_test(\%content, 'credit card decline');
57
58 sub ok_test {
59   my ($content, $label) = @_;
60   my $fail = delete $content{fail} or 0;
61   my $trans = new Business::OnlinePayment('NMI');
62   $trans->content(
63     login    => 'demo',
64     password => 'password',
65     type     => 'CC',
66     %$content
67   );
68   $trans->submit;
69   diag($trans->error_message) if (!$fail and $trans->error_message);
70   if($fail) {
71     ok(!$trans->is_success, $label)
72   }
73   else {
74     ok($trans->is_success, $label);
75   }
76   return $trans->order_number;
77 }
78
79 1;