Tokenization processing, refinements, tests
[Business-OnlinePayment-Bambora.git] / t / 032-payments-card-pre-authorization-complete-void.t
index 7c575c9..863c8e1 100755 (executable)
@@ -4,131 +4,109 @@ use warnings;
 use Test::More;
 
 use lib 't';
-require 'TestFixtures.pm';
+use TestFixtures;
 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', 32
+  skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 56
     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',
-  );
+    common_content(),
 
-  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
-    id
+    login => $merchant_id,
+    password => $api_key,
+
+    action => 'Authorization Only',
   );
 
-  ok( $response = $tr->response_decoded, 'response_decoded' );
+  #
+  # Process a pre-auth
+  #
 
-  for my $k ( keys %expect ) {
-    ok(
-      $response->{$k} eq $expect{$k},
-      sprintf '$tr->%s == %s', $k, $expect{$k}
-    );
-  }
+  my ( $tr, $response ) = make_api_request( \%content );
+
+  inspect_response(
+    $response,
+    {
+      amount => '9.99',
+      approved => 1,
+      auth_code => 'TEST',
+      message => 'Approved',
+      message_id => 1,
+      payment_method => 'CC',
+      type => 'PA',
+    },
+    [qw/
+      card
+      created
+      order_number
+      risk_score
+      id
+     /],
+  );
 
-  for my $k ( @expect ) {
-    ok(
-      defined $response->{$k},
-      sprintf '$r->%s (%s)',
-        $k, $response->{$k}
-    );
-  }
+  inspect_transaction(
+    $tr,
+    {
+      is_success => 1,
+    },
+    [qw/
+      message_id
+      authorization
+      order_number
+      txn_date
+      avs_code
+    /],
+  );
 
-  %content = (
+  #
+  # Process a post-auth
+  #
+
+  my %content_pa = (
     %content,
     action => 'Post Authorization',
     order_number => $tr->order_number,
     amount => '8.99', # $1 Less than pre-auth
   );
 
-  my $tr_pa;
-  ok( $tr_pa = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_pa' );
-  ok( $tr_pa->content( %content ), 'Set transaction content onto $tr_pa' );
-  {
-    local $@;
-    eval { $tr_pa->submit };
-    ok( !$@, "Submit post-auth" );
-    warn "Error: $@" if $@;
-  }
-
-  %expect = (
-    amount => '8.99',
-    approved => '1',
-    message => 'Approved',
-    message_id => '1',
-    type => 'PAC',
+  my ( $tr_pa, $response_pa ) = make_api_request( \%content_pa );
+
+  inspect_response(
+    $response_pa,
+    {
+      amount => '8.99',
+      approved => '1',
+      message => 'Approved',
+      message_id => '1',
+      type => 'PAC',
+    },
+    [qw/
+      authorizing_merchant_id
+      card
+      created
+      order_number
+      id
+    /],
+  );
+
+  inspect_transaction(
+    $tr_pa,
+    {
+      is_success => 1,
+    },
+    [qw/
+      message_id
+      authorization
+      order_number
+      txn_date
+      avs_code
+    /],
   );
-  @expect = (qw/
-    authorizing_merchant_id
-    card
-    created
-    order_number
-    id
-  /);
-
-  my $response_pa;
-  ok( $response_pa = $tr_pa->response_decoded, 'response_decoded' );
-
-  for my $k ( keys %expect ) {
-    ok(
-      $response_pa->{$k} eq $expect{$k},
-      sprintf '$tr->%s == %s', $k, $expect{$k}
-    );
-  }
-
-  for my $k ( @expect ) {
-    ok(
-      defined $response_pa->{$k},
-      sprintf '$r->%s (%s)',
-        $k, $response_pa->{$k}
-    );
-  }
 
   #
   # Void Transaction
@@ -138,34 +116,36 @@ SKIP: {
     action => 'Void',
     login => $content{login},
     password => $content{password},
+
     order_number => $tr_pa->order_number,
     amount => '8.99',
   );
 
-  my $tr_void;
-  ok( $tr_void = Business::OnlinePayment->new('Bambora'), 'Instantiate $tr_void' );
-  ok( $tr_void->content( %content_void ), 'Set transaction content onto $tr_void' );
-  {
-      local $@;
-      eval { $tr_void->submit };
-      ok( !$@, "Submit void" );
-      warn "Error: $@" if $@;
-  }
-
-  %expect = (
-    amount => '8.99',
-    approved => '1',
-    message => 'Approved',
-    message_id => '1',
-    type => 'R',
+  my ( $tr_void, $response_void ) = make_api_request( \%content_void );
+
+  inspect_response(
+    $response_void,
+    {
+      amount => '8.99',
+      approved => '1',
+      message => 'Approved',
+      message_id => '1',
+      type => 'R',
+    },
+    [qw/
+      authorizing_merchant_id
+      card
+      created
+      order_number
+      id
+    /],
+  );
+
+  inspect_transaction(
+    $tr_void,
+    { is_success => 1 },
+    [],
   );
-  @expect = (qw/
-    authorizing_merchant_id
-    card
-    created
-    order_number
-    id
-  /);
 
 }