CAM-SOAPClient

 view release on metacpan or  search on metacpan

t/client.t  view on Meta::CPAN

  <Body>
    <methodResponse>
      <userID xsi:type="xsd:string">12</userID>
      <data enc:arrayType="ss:SOAPStruct[]" xsi:type="enc:Array">
        <item xsi:type="ss:SOAPStruct"><id xsi:type="xsd:int">4</id></item>
        <item xsi:type="ss:SOAPStruct"><id xsi:type="xsd:int">6</id></item>
        <item xsi:type="ss:SOAPStruct"><id xsi:type="xsd:int">7</id></item>
        <item xsi:type="ss:SOAPStruct"><id xsi:type="xsd:int">10</id></item>
        <item xsi:type="ss:SOAPStruct"><id xsi:type="xsd:int">20</id></item>
      </data>
    </methodResponse>
  </Body>
</Envelope>
EOF
}
sub ns  # for SOAP::Lite v0.66 and later
{
   return shift;
}
sub uri # for SOAP::Lite v0.60 and ealier
{
   return shift;
}
sub proxy
{
   return shift;
}

package main;

my $obj = CAM::SOAPClient->new('http://www.foo.com/No/Such/Class/', 'foo');
ok($obj, 'Constructor');

# HACK! ruin the SOAP object for the sake of the test
$obj->{soap} = bless {}, 'FakeSOAP';

my $all = {data => [{id=>4},{id=>6},{id=>7},{id=>10},{id=>20}], userID => 12};
my @tests = (
   { request => undef,                       scalar => $all,          array => [$all]        },
   { request => 'data/item/id',              scalar => 4,             array => [4]           },
   { request => ['data/item/id'],            scalar => 4,             array => [4]           },
   { request => '@data/item/id',             scalar => 4,             array => [4,6,7,10,20] },
   { request => ['@data/item/id'],           scalar => 4,             array => [4,6,7,10,20] },
   { request => ['data/item/id','userID'],   scalar => 4,             array => [4,12]        },
   { request => ['@data/item/id','userID'],  scalar => [4,6,7,10,20], array => [[4,6,7,10,20],12] },
   { request => ['userID', '@data/item/id'], scalar => 12,            array => [12,[4,6,7,10,20]] },
);
for my $test (@tests)
{
   my $paths = $test->{request};
   my $spaths = Data::Dumper->new([$paths])->Terse(1)->Indent(0)->Dump();
   my $response = $obj->call('null', $paths);
   is_deeply($response, $test->{scalar}, "call scalar $spaths");
   $response = [$obj->call('null', $paths)];
   is_deeply($response, $test->{array},  "call array  $spaths");

   #print Dumper($obj->getLastSOM());
}

$obj = CAM::SOAPClient->new(wsdl => 'file:t/test.wsdl');
is($obj->{proxies}->{test}, 'http://www.foo.com/test.cgi', 'WSDL test - endpoint');
is($obj->{uris}->{test}, 'http://foo.com/test', 'WSDL test - uri');

is(CAM::SOAPClient->new(), undef, 'no uri specified');
isnt(CAM::SOAPClient->new('http://localhost'), undef, 'no proxy specified');
is_deeply({CAM::SOAPClient->new('http://localhost', undef, 'user', 'pass')->loginParams()}, {username => 'user', password => 'pass'}, 'username and password');



( run in 0.877 second using v1.01-cache-2.11-cpan-39bf76dae61 )