package MyPart;
use Class::Std::Fast;
package main;
use strict;
use warnings;
use Test::More tests => 21;
use_ok qw(SOAP::WSDL::Client::Base);
{
no warnings qw(redefine once);
*SOAP::WSDL::Client::call = sub { is $_[1]->{ operation }, 'sayHello', 'Called method';
return $_[2], $_[3];
};
}
my $client = SOAP::WSDL::Client::Base->new();
my @result = $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string
SOAP::WSDL::XSD::Typelib::Builtin::string
)],
},
header => {
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string
)],
},
headerfault => {
}
}, { value => 'Body' }, { value => 'Header' });
is $result[0]->[0], 'Body';
is $result[1], 'Header';
isa_ok $result[0]->[0], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
@result = $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
header => {
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
headerfault => {
}
}, SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => 'Body2' }),
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => 'Header2' })
);
is $result[0], 'Body2';
is $result[1], 'Header2';
isa_ok $result[1], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
# Call with more body parts than parameters. Body parts are empty
@result = $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
header => {
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
headerfault => {
}
}, [],
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => 'Header2' })
);
isa_ok $result[0], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
is $result[0], q{};
is $result[1], 'Header2';
isa_ok $result[1], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
# Call with more body parts than parameters. Body parts are empty
# No header
@result = $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
header => {
},
headerfault => {
}
});
isa_ok $result[0], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
is $result[0], q{};
eval { $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SomeStupidClassYouProbablyDontHaveOnYourSystem )],
},
header => {
},
headerfault => {
}
})
};
like $@, qr{ Can't \s locate }xms;
isa_ok $result[0], 'SOAP::WSDL::XSD::Typelib::Builtin::string';
is $result[0], q{};
eval { $client->call({
operation => 'sayHello',
soap_action => 'urn:HelloWorld#sayHello',
style => 'document',
body => {
'use' => 'literal',
namespace => '',
encodingStyle => '',
parts => [qw( SOAP::WSDL::XSD::Typelib::Builtin::string )],
},
header => {
parts => [qw( SomeOtherStupidClassYouProbablyDontHaveOnYourSystem )],
},
headerfault => {
}
})
};
# die $@;
like $@, qr{ Can't \s locate }xms;