summaryrefslogtreecommitdiff
path: root/t/041-tokenize-card.t
blob: f8a129235b9814ecad5054fb3a576389fa4dce53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/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', 32
    unless $merchant_id && $api_key;

  my %content = (
    login          => $merchant_id,
    password       => $api_key,
    action         => 'Tokenize',
    amount         => '9.99',

    owner          => 'Freeside Internet',
    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 request to create Payment Profile (tokenize)" );
  }

  my $response;

  my %expect = (
    code => 1,
    message => 'Operation Successful',
  );
  my @expect = qw(
    customer_code
  );

  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}
    );
  }

  ok(
    $response->{customer_code} eq $tr->card_token,
    '$tr->card_token eq $response->{customer_code}'
  );

}

done_testing;