1#!/bin/env perl 2 3BEGIN { 4 unless(grep /blib/, @INC) { 5 chdir 't' if -d 't'; 6 unshift @INC, '../lib' if -d '../lib'; 7 } 8} 9 10use strict; 11use Test; 12 13use SOAP::Lite 14 on_fault => sub { 15 my $soap = shift; 16 my $res = shift; 17 ref $res ? warn(join " ", "SOAP FAULT:", $res->faultstring, "\n") 18 : warn(join " ", "TRANSPORT ERROR:", $soap->transport->status, "\n"); 19 return new SOAP::SOM; 20 } 21; 22 23my($a, $s, $r); 24 25# updated on 2001/08/17 26# http://services.xmethods.net:80/soap/servlet/rpcrouter 27my $proxy = 'http://nagoya.apache.org:5049/axis/servlet/AxisServlet'; 28 29# ------------------------------------------------------ 30use SOAP::Test; 31 32$s = SOAP::Lite->uri('http://something/somewhere')->proxy($proxy)->on_fault(sub{}); 33eval { $s->transport->timeout($SOAP::Test::TIMEOUT = $SOAP::Test::TIMEOUT) }; 34$r = $s->test_connection; 35 36unless (defined $r && defined $r->envelope) { 37 print "1..0 # Skip: ", $s->transport->status, "\n"; 38 exit; 39} 40# ------------------------------------------------------ 41 42plan tests => 15; 43 44{ 45# XMethod's JavaSOAP server (http://xmethods.net/detail.html?id=11) 46 print "XMethod's JavaSOAP server test(s)...\n"; 47 $s = SOAP::Lite 48 -> uri('http://soapinterop.org/') 49 -> proxy($proxy) 50 ; 51 52 $a = 'SOAP::Lite'; 53 $r = $s->echoString($a)->result; 54 ok($r eq $a); 55 56 $a = ['a', 'b']; 57 $r = $s->echoStringArray($a)->result; 58 ok(ref $r && join('', @$r) eq join('', @$a)); 59 60 $a = 11; 61 $r = $s->echoInteger($a)->result; 62 ok($r == $a); 63 64 $a = [1, 3, 5]; 65 $r = $s->echoIntegerArray($a)->result; 66 ok(ref $r && join('', @$r) == join('', @$a)); 67 68 $a = 11.02; 69 $r = $s->echoFloat($a)->result; 70 ok($r == $a); 71 72 $a = [1.1, 3.3, 5.5]; 73 $r = $s->echoFloatArray($a)->result; 74 ok(ref $r && join('', @$r) eq join('', @$a)); 75 76 # you may specify URI manually (but see maptype() below) 77 $a = {varString => 'b', varInt => 2, varFloat => 95.7}; 78 $r = $s->echoStruct( 79 SOAP::Data->type('xx:SOAPStruct' => $a) 80 ->attr({'xmlns:xx' => 'http://soapinterop.org/xsd'}) 81 )->result; 82 ok(ref $r && join('', sort values %$r) eq join('', sort values %$a)); 83 84 # specify mapping to URI 85 $s->maptype({SOAPStruct => 'http://soapinterop.org/xsd'}); 86 87 $a = {varString => 'b', varInt => 2, varFloat => 95.7}; 88 $r = $s->echoStruct($a)->result; 89 ok(ref $r && join('', sort values %$r) eq join('', sort values %$a)); 90 91 $a = {varString => 'b', varInt => 2, varFloat => 95.7}; 92 $r = $s->echoStruct(SOAP::Data->name(something => $a))->result; 93 ok(ref $r && join('', sort values %$r) eq join('', sort values %$a)); 94 95 $a = [ 96 {varString => 'b', varInt => 2, varFloat => 95.7}, 97 {varString => 'c', varInt => 3, varFloat => 85.7}, 98 {varString => 'd', varInt => 4, varFloat => 75.7}, 99 ]; 100 $r = $s->echoStructArray($a)->result; 101 ok(ref $r && join('', map { sort values %$_ } @$r) eq join('', map { sort values %$_ } @$a)); 102 103 $a = [ 104 {varString => 'b', varInt => 2, varFloat => 95.7}, 105 {varString => 'c', varInt => 3, varFloat => 85.7}, 106 {varString => 'd', varInt => 4, varFloat => 75.7}, 107 ]; 108 $r = $s->echoStructArray(SOAP::Data->name(something => $a))->result; 109 ok(ref $r && join('', map { sort values %$_ } @$r) eq join('', map { sort values %$_ } @$a)); 110 111 my $key = "\0\1"; 112 my $value = 456; 113 114 { local $^W; 115 # implicit, warning with -w 116 $a = $s->echoMap({a => 123, $key => $value})->result; 117 ok($a->{$key} == $value); 118 } 119 120 # explicit 121 $a = $s->echoMap(SOAP::Data->type(map => {a => 123, $key => $value}))->result; 122 ok($a->{$key} == $value); 123 124 { local $^W; 125 # implicit, warning with -w 126 $a = $s->echoMapArray([{a => 123, $key => $value}, {b => 123, $key => 789}])->result; 127 ok($a->[0]->{$key} == $value); 128 } 129 130 # explicit 131 $a = $s->echoMapArray([SOAP::Data->type(map => {a => 123, $key => $value}), SOAP::Data->type(map => {b => 123, $key => 789})])->result; 132 ok($a->[0]->{$key} == $value); 133} 134