WebService-Braintree
view release on metacpan or search on metacpan
t/lib/WebService/Braintree/TestHelper.pm view on Meta::CPAN
use Test::More;
use lib qw(lib t/lib);
use Carp qw(confess);
use Data::Dumper;
use DDP;
use DateTime::Format::Strptime;
use JSON;
use MIME::Base64;
use Time::HiRes qw(gettimeofday);
use Try::Tiny;
use DateTime::Format::Strptime;
use WebService::Braintree;
use WebService::Braintree::ClientApiHTTP;
use WebService::Braintree::ClientToken;
use WebService::Braintree::Util;
use Test::Deep;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(
create_escrowed_transaction
create_settled_transaction
generate_unique_integer
make_subscription_past_due
amount
not_ok
perform_search
should_throw
should_throw_containing
validate_result invalidate_result
nonce_for_new_payment_method
credit_card cc_number cc_last4 cc_bin cc_masked
settle
);
our @EXPORT_OK = qw(
);
{
my $config;
sub config {
return $config;
}
sub import {
my ($class, $env) = @_;
$env ||= 'integration';
$class->export_to_level(1, @EXPORT);
$config = WebService::Braintree->configuration;
$config->environment($env);
if ($env eq 'sandbox') {
my $conf_file = 'sandbox_config.json';
die "Can not run sandbox tests without $conf_file in distribution root" unless -e $conf_file;
my $sandbox = decode_json( do { local $/; open my($f), $conf_file; <$f>} );
$config->public_key($sandbox->{public_key});
$config->merchant_id($sandbox->{merchant_id});
$config->private_key($sandbox->{private_key});
}
}
}
# The sandbox must have specific items in it with specific values.
sub verify_sandbox {
subtest verify_sandbox => sub {
my %required_addons = (
increase_30 => superhashof(bless {
id => 'increase_30',
amount => '30.00',
never_expires => 1,
}, 'WebService::Braintree::_::AddOn'),
);
my %addons = map {
$_->id => $_
} @{WebService::Braintree::AddOn->all};
return unless cmp_deeply(\%addons, superhashof(\%required_addons), 'Validate addons');
my %required_discounts = (
discount_15 => superhashof(bless {
id => 'discount_15',
amount => '15.00',
never_expires => 1,
}, 'WebService::Braintree::_::Discount'),
);
my %discounts = map {
$_->id => $_
} @{WebService::Braintree::Discount->all};
return unless cmp_deeply(\%discounts, superhashof(\%required_discounts), 'Validate discounts');
my %required_plans = (
integration_trialless_plan => superhashof(bless {
price => '12.34',
number_of_billing_cycles => undef,
billing_day_of_month => undef,
trial_period => 0,
add_ons => [],
discounts => [],
}, 'WebService::Braintree::_::Plan'),
integration_plan_with_add_ons_and_discounts => superhashof(bless {
price => '1.00',
number_of_billing_cycles => undef,
billing_day_of_month => undef,
trial_period => 1,
add_ons => [
superhashof(bless {
id => 'increase_30',
amount => '30.00',
never_expires => 1,
}, 'WebService::Braintree::_::AddOn'),
],
discounts => [
superhashof(bless {
id => 'discount_15',
amount => '15.00',
never_expires => 1,
}, 'WebService::Braintree::_::Discount'),
],
}, 'WebService::Braintree::_::Plan'),
( run in 3.036 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )