22-interop_apache.t [plain text]
#!/bin/env perl
BEGIN {
unless(grep /blib/, @INC) {
chdir 't' if -d 't';
unshift @INC, '../lib' if -d '../lib';
}
}
use strict;
use Test;
use SOAP::Lite
on_fault => sub {
my $soap = shift;
my $res = shift;
ref $res ? warn(join " ", "SOAP FAULT:", $res->faultstring, "\n")
: warn(join " ", "TRANSPORT ERROR:", $soap->transport->status, "\n");
return new SOAP::SOM;
}
;
my($a, $s, $r);
# updated on 2001/08/17
# http://services.xmethods.net:80/soap/servlet/rpcrouter
my $proxy = 'http://nagoya.apache.org:5049/axis/servlet/AxisServlet';
# ------------------------------------------------------
use SOAP::Test;
$s = SOAP::Lite->uri('http://something/somewhere')->proxy($proxy)->on_fault(sub{});
eval { $s->transport->timeout($SOAP::Test::TIMEOUT = $SOAP::Test::TIMEOUT) };
$r = $s->test_connection;
unless (defined $r && defined $r->envelope) {
print "1..0 # Skip: ", $s->transport->status, "\n";
exit;
}
# ------------------------------------------------------
plan tests => 15;
{
# XMethod's JavaSOAP server (http://xmethods.net/detail.html?id=11)
print "XMethod's JavaSOAP server test(s)...\n";
$s = SOAP::Lite
-> uri('http://soapinterop.org/')
-> proxy($proxy)
;
$a = 'SOAP::Lite';
$r = $s->echoString($a)->result;
ok($r eq $a);
$a = ['a', 'b'];
$r = $s->echoStringArray($a)->result;
ok(ref $r && join('', @$r) eq join('', @$a));
$a = 11;
$r = $s->echoInteger($a)->result;
ok($r == $a);
$a = [1, 3, 5];
$r = $s->echoIntegerArray($a)->result;
ok(ref $r && join('', @$r) == join('', @$a));
$a = 11.02;
$r = $s->echoFloat($a)->result;
ok($r == $a);
$a = [1.1, 3.3, 5.5];
$r = $s->echoFloatArray($a)->result;
ok(ref $r && join('', @$r) eq join('', @$a));
# you may specify URI manually (but see maptype() below)
$a = {varString => 'b', varInt => 2, varFloat => 95.7};
$r = $s->echoStruct(
SOAP::Data->type('xx:SOAPStruct' => $a)
->attr({'xmlns:xx' => 'http://soapinterop.org/xsd'})
)->result;
ok(ref $r && join('', sort values %$r) eq join('', sort values %$a));
# specify mapping to URI
$s->maptype({SOAPStruct => 'http://soapinterop.org/xsd'});
$a = {varString => 'b', varInt => 2, varFloat => 95.7};
$r = $s->echoStruct($a)->result;
ok(ref $r && join('', sort values %$r) eq join('', sort values %$a));
$a = {varString => 'b', varInt => 2, varFloat => 95.7};
$r = $s->echoStruct(SOAP::Data->name(something => $a))->result;
ok(ref $r && join('', sort values %$r) eq join('', sort values %$a));
$a = [
{varString => 'b', varInt => 2, varFloat => 95.7},
{varString => 'c', varInt => 3, varFloat => 85.7},
{varString => 'd', varInt => 4, varFloat => 75.7},
];
$r = $s->echoStructArray($a)->result;
ok(ref $r && join('', map { sort values %$_ } @$r) eq join('', map { sort values %$_ } @$a));
$a = [
{varString => 'b', varInt => 2, varFloat => 95.7},
{varString => 'c', varInt => 3, varFloat => 85.7},
{varString => 'd', varInt => 4, varFloat => 75.7},
];
$r = $s->echoStructArray(SOAP::Data->name(something => $a))->result;
ok(ref $r && join('', map { sort values %$_ } @$r) eq join('', map { sort values %$_ } @$a));
my $key = "\0\1";
my $value = 456;
{ local $^W;
# implicit, warning with -w
$a = $s->echoMap({a => 123, $key => $value})->result;
ok($a->{$key} == $value);
}
# explicit
$a = $s->echoMap(SOAP::Data->type(map => {a => 123, $key => $value}))->result;
ok($a->{$key} == $value);
{ local $^W;
# implicit, warning with -w
$a = $s->echoMapArray([{a => 123, $key => $value}, {b => 123, $key => 789}])->result;
ok($a->[0]->{$key} == $value);
}
# explicit
$a = $s->echoMapArray([SOAP::Data->type(map => {a => 123, $key => $value}), SOAP::Data->type(map => {b => 123, $key => 789})])->result;
ok($a->[0]->{$key} == $value);
}