]> git.imager.perl.org - bse.git/blob - t/100-payment/030-eway.t
allow hypens in formlink form name values
[bse.git] / t / 100-payment / 030-eway.t
1 #!perl -w
2 use strict;
3 use Test::More;
4
5 BEGIN {
6   eval { require XML::LibXML; }
7     or plan skip_all => "No XML::LibXML";
8   eval { require LWP::UserAgent; }
9     or plan skip_all => "No XML::LibXML";
10   eval { require Crypt::SSLeay; }
11     or plan skip_all => "No Crypt::SSLeay";
12
13   plan tests => 17;
14 }
15
16 ++$|;
17
18 my $debug = 0;
19
20 my $gotmodule;
21 BEGIN { $gotmodule = use_ok('DevHelp::Payments::Eway'); }
22
23 my %cfg_good =
24   (
25    test=>1,
26    debug => $debug,
27   );
28
29 my $cfg = bless \%cfg_good, 'Test::Cfg';
30
31 my $payment = DevHelp::Payments::Eway->new($cfg);
32
33 ok($payment, 'make payment object');
34
35 {
36   my %req =
37     (   
38      cardnumber => '4444333322221111',
39      expirydate => '200708',
40      nameoncard => "Joseph Bloe",
41      amount => 1000,
42      orderno => time,
43      cvv => "123",
44     );
45
46   my $result = $payment->payment(%req);
47   ok($result->{success}, "successful");
48   ok($result->{receipt}, "got a receipt");
49   ok($result->{transactionid}, "got a transaction id");
50 }
51
52 {
53   my %req =
54     (   
55      cardnumber => '4444333322221111',
56      expirydate => '200708',
57      nameoncard => "Joseph Bloe",
58      amount => 1000,
59      orderno => time,
60      cvv => "123",
61      currency => "AUD",
62     );
63
64   my $result = $payment->payment(%req);
65   ok($result->{success}, "successful with AUD");
66   ok($result->{receipt}, "got a receipt");
67   ok($result->{transactionid}, "got a transaction id");
68 }
69
70 { # supply everything
71   my %req =
72     (   
73      cardnumber => '4444333322221111',
74      expirydate => '200708',
75      nameoncard => "Joseph Bloe",
76      amount => 1000,
77      orderno => time,
78      cvv => "123",
79      currency => "AUD",
80      firstname => "Joseph",
81      lastname => "Bloe",
82      address1 => "Unit 1",
83      address2 => "56 Unknown Pde",
84      suburb => "Sydney",
85      postcode => "2345",
86      state => "NSW",
87      countrycode => "AU",
88      email => 'test@example.com',
89      description => "Test transaction",
90      ipaddress => "127.0.0.1",
91     );
92
93   my $result = $payment->payment(%req);
94   ok($result->{success}, "successful with details");
95   ok($result->{receipt}, "got a receipt");
96   ok($result->{transactionid}, "got a transaction id");
97 }
98
99 {
100   my %req =
101     (
102      cardnumber => '4242424242424242',
103      expirydate => '200708',
104      nameoncard => "Joseph Bloe",
105      amount => 1000,
106      orderno => time,
107      cvv => "321",
108     );
109   my $result = $payment->payment(%req);
110   ok(!$result->{success}, "failure (bad card number)");
111   ok($result->{statuscode}, "got an error code");
112   like($result->{error}, qr/credit card/, "error should mention credit card");
113 }
114
115 {
116   my %req =
117     (
118      cardnumber => '4444333322221111',
119      expirydate => '200708',
120      nameoncard => "Joseph Bloe",
121      amount => 1001,
122      orderno => time,
123      cvv => "321",
124     );
125   my $result = $payment->payment(%req);
126   ok(!$result->{success}, "failure (generated error)");
127   like($result->{statuscode}, qr/[0-9]+/, "got a numeric error code");
128   like($result->{error}, qr/^Refer to Issuer/, "match expected message");
129 }
130
131 package Test::Cfg;
132
133 sub entry {
134   my ($self, $section, $key, $def) = @_;
135
136   $section eq 'eway payments' or die;
137   exists $self->{$key} or return $def;
138
139   return $self->{$key};
140 }