#!/usr/bin/perl use strict; use warnings; use Test::More; { # fake test driver (with a submit method) package Business::OnlinePayment::MOCK; use strict; use warnings; use base qw(Business::OnlinePayment); sub submit { my $self = shift; return 1; } } $INC{"Business/OnlinePayment/MOCK.pm"} = "testing"; use Business::OnlinePayment; my $package = "Business::OnlinePayment"; my $fddrv = "preCharge"; eval { my $tobj = $package->new("MOCK"); $tobj->fraud_detect($fddrv); $tobj->submit; }; if ( $@ =~ /One of Net::SSLeay.*?or Crypt::SSLeay/ ) { plan skip_all => "fraud_detect: $@\n"; } else { plan tests => 5; } my $obj = $package->new("MOCK"); can_ok( $obj, qw(fraud_detect) ); # fraud detection failure modes my $fdbog = "__BOGUS_PROCESSOR"; is( $obj->fraud_detect($fdbog), $fdbog, "fraud_detect set to '$fdbog'" ); eval { $obj->submit; }; like( $@, qr/^Unable to locate fraud_detection /, "fraud_detect with unknown processor croaks" ); is( $obj->fraud_detect($fddrv), $fddrv, "fraud_detect set to '$fddrv'" ); eval { $obj->submit; }; like( $@, qr/^missing required /, "fraud_detect($fddrv) missing fields" ); # XXX: more test cases needed