X-Git-Url: http://git.freeside.biz/gitweb/?p=Business-OnlinePayment-Bambora.git;a=blobdiff_plain;f=t%2F022-payments-card-pre-authorization.t;fp=t%2F022-payments-card-pre-authorization.t;h=acceee520b0307a9c34638b3e01114077459a973;hp=0000000000000000000000000000000000000000;hb=4eac3eefba3e494cc771d43df1cd3fa3aaece916;hpb=a2c0deaa1ef38f442ac596cd61c6373277aa7258 diff --git a/t/022-payments-card-pre-authorization.t b/t/022-payments-card-pre-authorization.t new file mode 100644 index 0000000..acceee5 --- /dev/null +++ b/t/022-payments-card-pre-authorization.t @@ -0,0 +1,122 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use lib 't'; +require 'TestFixtures.pm'; +use Business::OnlinePayment; + +my $merchant_id = $ENV{BAMBORA_MERCHANT_ID}; +my $api_key = $ENV{BAMBORA_API_KEY}; + +SKIP: { + skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 3 + unless $merchant_id && $api_key; + + my %content = ( + login => $merchant_id, + password => $api_key, + action => 'Authorization Only', + amount => '9.99', + + owner => 'Freeside Internet Services', + name => 'Mitch Jackson', + address => '1407 Graymalkin Lane', + city => 'Vancouver', + state => 'BC', + zip => '111 111', + country => 'CA', + + invoice_number => time(), + card_number => '4030000010001234', + cvv2 => '123', + expiration => '1122', + phone => '251-300-1300', + email => 'mitch@freeside.biz', + ); + + my $tr; + ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' ); + ok( $tr->content( %content ), 'Set transaction content onto $tr' ); + { + local $@; + eval { $tr->submit }; + ok( !$@, "Submit pre-auth (expect approve)" ); + } + + my $response; + my %expect = ( + amount => '9.99', + approved => 1, + auth_code => 'TEST', + message => 'Approved', + message_id => 1, + payment_method => 'CC', + type => 'PA', + ); + my @expect = qw( + card + created + order_number + risk_score + ); + + ok( $response = $tr->response_decoded, 'response_decoded' ); + + for my $k ( keys %expect ) { + ok( + $response->{$k} eq $expect{$k}, + sprintf '$tr->%s == %s', $k, $expect{$k} + ); + } + + for my $k ( @expect ) { + ok( + defined $response->{$k}, + sprintf '$r->%s (%s)', + $k, $response->{$k} + ); + } + + %content = ( + %content, + action => 'post authorization', + order_number => $tr->order_number, + ); + + my $tr_pa; + ok( $tr_pa = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_pa' ); + ok( $tr->content( %content ), 'Set transaction content onto $tr_pa' ); + { + local $@; + eval { $tr_pa->submit }; + ok( !$@, "Submit post-auth" ); + warn "Error: $@" if $@; + } + + my $response_pa; + + + ok( $response_pa = $tr_pa->response_decoded, 'response_decoded' ); + + # for my $attr (qw/ + # message_id + # authorization + # order_number + # txn_date + # avs_code + # is_success + # /) { + # ok( + # defined $tr->$attr(), + # sprintf '%s $tr->%s() = %s', + # $name, + # $attr, + # $tr->$attr() + # ); + # } + +} + +done_testing; \ No newline at end of file