CAM-SOAPClient
view release on metacpan or search on metacpan
#!/usr/bin/perl -w
use strict;
use warnings;
BEGIN
{
use Test::More tests => 14;
use_ok('CAM::SOAPClient');
}
my $PORT = 9674;
SKIP:
{
require IO::Socket;
my $s = IO::Socket::INET->new(PeerAddr => "localhost:$PORT",
Timeout => 10);
if (!$s)
{
skip(
"The test server is not running. Run via: './t/soap.pl $PORT &'\n" .
"(the server runs for about ten minutes before turning itself off)\n" .
"(Also note that the server require CAM::SOAPApp to be installed...)\n",
# Hack: get the number of tests we expect, skip all but one
# This hack relies on the soliton nature of Test::Builder
Test::Builder->new()->expected_tests() -
Test::Builder->new()->current_test()
);
}
close $s;
my $uri = 'http://localhost/Example';
my $proxy = "http://localhost:$PORT/soaptest/soap.pl";
my $ssn = '111-11-1111';
is_deeply([getPhoneNumber_SOAPLite($ssn, $uri, $proxy)], ['212-555-1212'], 'SOAP::Lite');
is_deeply([getPhoneNumber_CAM_SOAP($ssn, $uri, $proxy)], ['212-555-1212'], 'CAM::SOAPClient');
my $c;
my @result;
$c = CAM::SOAPClient->new($uri, $proxy);
@result = $c->call('fail');
ok($c->hadFault(), 'fault');
is_deeply(\@result, [], 'fault');
isnt($c->getLastFaultCode(), '(none)', 'fault, faultcode');
isnt($c->getLastFaultString(), '(none)', 'fault, faultstring');
my $fault = $c->getLastFault();
isnt($fault, undef, 'getLastFault');
isnt($fault->faultcode, undef, 'getLastFault');
isnt($fault->faultstring, undef, 'getLastFault');
$c = CAM::SOAPClient->new($uri, $proxy);
@result = $c->call('abort');
ok($c->hadFault(), 'server failure');
is_deeply(\@result, [], 'server failure');
is($c->getLastFaultCode(), 'Client', 'server failure, faultcode');
isnt($c->getLastFaultString(), '(none)', 'server failure, faultstring');
}
sub getPhoneNumber_CAM_SOAP
{
my ($ssn, $uri, $proxy) = @_;
my $c = CAM::SOAPClient->new(timeout => 15, $uri, $proxy);
my @result = $c->call('getEmployeeData', 'phone', ssn => $ssn);
die 'Fault' if ($c->hadFault());
return @result;
}
sub getPhoneNumber_SOAPLite
{
my ($ssn, $uri, $proxy) = @_;
# The SOAP::Lite API changed in v0.65-beta7
my $soap = SOAP::Lite->can('ns') ? SOAP::Lite->ns($uri) : SOAP::Lite->uri($uri);
( run in 1.638 second using v1.01-cache-2.11-cpan-39bf76dae61 )