import SOAP-WSDL 2.00_24 from CPAN
git-cpan-module: SOAP-WSDL git-cpan-version: 2.00_24 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_24.tar.gz
This commit is contained in:
committed by
Michael G. Schwern
parent
b955c5ad79
commit
84b53d9261
@@ -37,5 +37,5 @@ ok ($xml = $soap->call('test',
|
||||
}
|
||||
), 'Serialized complexType' );
|
||||
|
||||
is $xml, q{<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ><SOAP-ENV:Body><testAll><TestRef>TestRef</TestRef><Test2>Test2</Test2></testAll></SOAP-ENV:Body></SOAP-ENV:Envelope>}
|
||||
like $xml, qr{<SOAP-ENV:Body><testAll><TestRef>TestRef</TestRef><Test2>Test2</Test2></testAll></SOAP-ENV:Body>}
|
||||
, 'element ref="" serialization';
|
||||
|
||||
@@ -44,8 +44,8 @@ ok ($xml = $soap->call('testRef',
|
||||
testElementRef => 'Test'
|
||||
), 'Serialized (simple) element' );
|
||||
|
||||
is $xml
|
||||
, q{<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ><SOAP-ENV:Body><testElementRef xmlns="urn:Test">Test</testElementRef></SOAP-ENV:Body></SOAP-ENV:Envelope>}
|
||||
like $xml
|
||||
, qr{<testElementRef\s\sxmlns="urn:Test">Test</testElementRef></SOAP-ENV:Body></SOAP-ENV:Envelope>}
|
||||
, 'element ref serialization result'
|
||||
;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use Test::More tests => 11;
|
||||
use Test::More tests => 13;
|
||||
use lib '../../../lib';
|
||||
use_ok qw(SOAP::WSDL::Deserializer::Hash);
|
||||
|
||||
@@ -13,9 +13,27 @@ is $data->{a}->{b}->[0], 1;
|
||||
is $data->{a}->{b}->[1], 2;
|
||||
is $data->{a}->{c}, 3;
|
||||
|
||||
ok $data = $deserializer->deserialize(q{<a><b><c>1</c></b><b><c>2</c></b></a>});
|
||||
# need 3 elements in array to trigger all branches...
|
||||
# need ignorable whitespace to trigger removal...
|
||||
ok $data = $deserializer->deserialize(
|
||||
q{<a>
|
||||
<b><c>1</c></b>
|
||||
<b><c>2</c></b>
|
||||
<b><c>3</c></b>
|
||||
</a>});
|
||||
is $data->{a}->{b}->[0]->{c}, 1;
|
||||
is $data->{a}->{b}->[1]->{c}, 2;
|
||||
|
||||
eval { $deserializer->deserialize('grzlmpfh') };
|
||||
ok $@->isa('SOAP::WSDL::SOAP::Typelib::Fault11');
|
||||
ok $@->isa('SOAP::WSDL::SOAP::Typelib::Fault11');
|
||||
|
||||
my $fault = $deserializer->generate_fault({
|
||||
message => 'Foo',
|
||||
code => 'Bar',
|
||||
role => 'mine',
|
||||
});
|
||||
|
||||
is $fault->get_faultstring(), 'Foo';
|
||||
|
||||
$fault = $deserializer->generate_fault({});
|
||||
is $fault->get_faultstring(), 'Unknown error';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use Test::More;
|
||||
use SOAP::Lite;
|
||||
|
||||
eval { require SOAP::Lite; 1; } or do {
|
||||
plan skip_all => 'SOAP::Lite not available';
|
||||
exit 0;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
use Test::More tests => 5;
|
||||
use Test::More tests => 8;
|
||||
|
||||
use SOAP::WSDL::Deserializer::XSD;
|
||||
|
||||
@@ -16,4 +16,8 @@ my $fault = $obj->generate_fault();
|
||||
|
||||
is $fault->get_faultstring(), 'Unknown error';
|
||||
is $fault->get_faultactor(), 'urn:localhost';
|
||||
is $fault->get_faultcode(), 'soap:Client';
|
||||
is $fault->get_faultcode(), 'soap:Client';
|
||||
|
||||
isa_ok $obj->deserialize('rubbeldiekatz'), 'SOAP::WSDL::SOAP::Typelib::Fault11';
|
||||
isa_ok $obj->deserialize('<zumsel></zumsel>'), 'SOAP::WSDL::SOAP::Typelib::Fault11';
|
||||
isa_ok $obj->deserialize('<Envelope xmlns="huchmampf"></Envelope>'), 'SOAP::WSDL::SOAP::Typelib::Fault11';
|
||||
@@ -1,4 +1,4 @@
|
||||
use Test::More tests => 34;
|
||||
use Test::More tests => 37;
|
||||
use File::Basename qw(dirname);
|
||||
use File::Spec;
|
||||
use File::Path;
|
||||
@@ -40,9 +40,10 @@ $generator->set_typemap_prefix('MyTypemaps');
|
||||
$generator->set_interface_prefix('MyInterfaces');
|
||||
|
||||
$generator->set_output(undef);
|
||||
$generator->generate_typelib();
|
||||
$generator->generate_typemap();
|
||||
$generator->generate_interface();
|
||||
$generator->generate();
|
||||
#$generator->generate_typelib();
|
||||
#$generator->generate_typemap();
|
||||
#$generator->generate_interface();
|
||||
|
||||
eval "use lib '$path/testlib'";
|
||||
use_ok qw( MyInterfaces::testService::testPort );
|
||||
@@ -122,6 +123,7 @@ ok eval { require MyTypes::testComplexTypeElementAtomicSimpleType; };
|
||||
my $ct_east = MyTypes::testComplexTypeElementAtomicSimpleType->new({
|
||||
testString => 'Just some test',
|
||||
testAtomicSimpleTypeElement => 42,
|
||||
testAtomicSimpleTypeElement2 => 23,
|
||||
});
|
||||
|
||||
is $ct_east->get_testAtomicSimpleTypeElement, 42;
|
||||
@@ -129,4 +131,11 @@ is $ct_east->get_testAtomicSimpleTypeElement->get_value(), 42;
|
||||
isa_ok($ct_east->get_testAtomicSimpleTypeElement,
|
||||
'MyTypes::testComplexTypeElementAtomicSimpleType::_testAtomicSimpleTypeElement');
|
||||
|
||||
|
||||
is $ct_east->get_testAtomicSimpleTypeElement2, 23;
|
||||
is $ct_east->get_testAtomicSimpleTypeElement2->get_value(), 23;
|
||||
isa_ok($ct_east->get_testAtomicSimpleTypeElement2,
|
||||
'MyTypes::testComplexTypeElementAtomicSimpleType::_testAtomicSimpleTypeElement2');
|
||||
|
||||
|
||||
rmtree "$path/testlib";
|
||||
|
||||
@@ -23,6 +23,7 @@ ok( $soap->get_transport->set_base_dir( join '/', $base_dir, 'acceptance' ) );
|
||||
$soap->outputxml(1);
|
||||
$response = $soap->call({ operation => 'test', soap_action => 'http://test2' }, {});
|
||||
is $response, 'test2', 'Returned file content';
|
||||
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use Test::More tests => 18;
|
||||
use Test::More tests => 19;
|
||||
use strict;
|
||||
use warnings;
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::boolean;
|
||||
@@ -46,6 +46,7 @@ is "$bool", 'false', 'stringification';
|
||||
ok $bool->isa('SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType'), 'inheritance';
|
||||
|
||||
is $bool->serialize({ name => 'test'}), '<test >false</test >';
|
||||
is $bool->serialize(), 'false';
|
||||
|
||||
$bool->delete_value();
|
||||
is "$bool", '', 'serialized undef to empty string';
|
||||
@@ -53,6 +53,12 @@ my %localized_date_of = (
|
||||
|
||||
);
|
||||
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::date->new();
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::date->new({});
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::date->new({
|
||||
value => '2007-12-31'
|
||||
});
|
||||
|
||||
while (my ($date, $converted) = each %localized_date_of ) {
|
||||
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::date->new();
|
||||
|
||||
@@ -22,6 +22,10 @@ my %dates = (
|
||||
'30 Aug 2007' => '2007-08-30T00:00:00',
|
||||
);
|
||||
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::dateTime->new();
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::dateTime->new({});
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::dateTime->new({ value => '2007-08-31T00:32:00' });
|
||||
|
||||
while (my ($date, $converted) = each %dates ) {
|
||||
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::dateTime->new();
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
use Test::More tests => 5;
|
||||
use strict;
|
||||
use warnings;
|
||||
use SOAP::WSDL::XSD::Typelib::Builtin::language;
|
||||
my $Name = SOAP::WSDL::XSD::Typelib::Builtin::language->new();
|
||||
is $Name->get_value(), undef;
|
||||
$Name = SOAP::WSDL::XSD::Typelib::Builtin::language->new({});
|
||||
is $Name->get_value(), undef;
|
||||
ok $Name = SOAP::WSDL::XSD::Typelib::Builtin::language->new({ value => 'DE' });
|
||||
is "$Name", "DE", 'stringification';
|
||||
|
||||
ok $Name->isa('SOAP::WSDL::XSD::Typelib::Builtin::token'), 'inheritance';
|
||||
@@ -17,8 +17,11 @@ my $timezone = timezone;
|
||||
use_ok('SOAP::WSDL::XSD::Typelib::Builtin::time');
|
||||
my $obj;
|
||||
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::time->new({value => '12:23:33'});
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::time->new({});
|
||||
$obj = SOAP::WSDL::XSD::Typelib::Builtin::time->new();
|
||||
|
||||
|
||||
$obj->set_value( '12:23:03' );
|
||||
is $obj->get_value() , "12:23:03$timezone", 'conversion';
|
||||
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package MyType;
|
||||
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
my %test_of :ATTR(:get<test>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ 'test' ],
|
||||
{
|
||||
test => \%test_of,
|
||||
},
|
||||
{
|
||||
test => 'SOAP::WSDL::XSD::Typelib::Builtin::string',
|
||||
}
|
||||
);
|
||||
|
||||
package MyType2;
|
||||
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::ComplexType);
|
||||
|
||||
my %test2_of :ATTR(:get<test>);
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ 'test' ],
|
||||
{
|
||||
test => \%test2_of,
|
||||
},
|
||||
{
|
||||
test => 'MyType',
|
||||
}
|
||||
);
|
||||
|
||||
package main;
|
||||
use Test::More tests => 90;
|
||||
use Data::Dumper;
|
||||
use Storable;
|
||||
my $obj;
|
||||
|
||||
$obj = MyType->new({});
|
||||
isa_ok $obj, 'MyType';
|
||||
is $obj->get_test, undef, 'undefined element content';
|
||||
|
||||
$obj = MyType->new({ test => 'Test1'});
|
||||
isa_ok $obj, 'MyType';
|
||||
isa_ok $obj->get_test, 'SOAP::WSDL::XSD::Typelib::Builtin::string';
|
||||
is $obj->get_test, 'Test1', 'element content';
|
||||
|
||||
$obj = MyType->new({
|
||||
test => SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test2'
|
||||
})
|
||||
});
|
||||
isa_ok $obj, 'MyType';
|
||||
isa_ok $obj->get_test, 'SOAP::WSDL::XSD::Typelib::Builtin::string';
|
||||
is $obj->get_test, 'Test2', 'element content';
|
||||
|
||||
$obj = MyType->new({
|
||||
test => { value => 'Test2' } # just a trick - pass it unaltered to new...
|
||||
});
|
||||
isa_ok $obj, 'MyType';
|
||||
isa_ok $obj->get_test, 'SOAP::WSDL::XSD::Typelib::Builtin::string';
|
||||
is $obj->get_test, 'Test2', 'element content';
|
||||
|
||||
$obj = MyType->new({
|
||||
test => [
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test'
|
||||
}),
|
||||
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test2'
|
||||
})
|
||||
],
|
||||
});
|
||||
isa_ok $obj, 'MyType';
|
||||
isa_ok $obj->get_test, 'ARRAY';
|
||||
is $obj->get_test()->[0], 'Test', 'element content';
|
||||
is $obj->get_test()->[1], 'Test2', 'element content';
|
||||
|
||||
my $nested = MyType2->new({
|
||||
test => $obj,
|
||||
});
|
||||
|
||||
is $nested->get_test, $obj;
|
||||
$nested = MyType2->new({
|
||||
test => [$obj, $obj],
|
||||
});
|
||||
|
||||
is $nested->get_test->[0], $obj;
|
||||
|
||||
$nested = MyType2->new({
|
||||
test => {
|
||||
test => [
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test'
|
||||
}),
|
||||
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test2'
|
||||
})
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
is $nested->get_test->[0], $obj;
|
||||
|
||||
$obj = MyType->new();
|
||||
isa_ok $obj, 'MyType';
|
||||
is $obj->get_test, undef, 'undefined element content';
|
||||
|
||||
$obj->add_test(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => 'TestString0'})
|
||||
);
|
||||
|
||||
is $obj->get_test, 'TestString0', 'added element content';
|
||||
|
||||
for my $count (1..5) {
|
||||
$obj->add_test(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => "TestString$count" })
|
||||
);
|
||||
|
||||
is ref $obj->get_test(), 'ARRAY', 'element content structure';
|
||||
is @{ $obj->get_test() }, $count+1, "element list length: " . ($count + 1);
|
||||
|
||||
for my $index (0..$count-1) {
|
||||
is $obj->get_test->[$index], "TestString$index", "element content [$index]";
|
||||
}
|
||||
}
|
||||
|
||||
# TODO - remove after *{ "$class\::$name"" } methods are gone
|
||||
|
||||
$obj = MyType->new();
|
||||
|
||||
isa_ok $obj, 'MyType';
|
||||
is $obj->get_test, undef;
|
||||
|
||||
eval { my $foo = @{ $obj->get_test() } };
|
||||
like $@ , qr{Can't \s use \s an \s undefined}x, 'get_ELEMENT still undef on ARRAYIFY';
|
||||
|
||||
$obj->test(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => 'TestString0'})
|
||||
);
|
||||
|
||||
is $obj->get_test, 'TestString0';
|
||||
eval { is @{ $obj->get_test() }, 1, 'ARRAYIFY get_ELEMENT' };
|
||||
fail 'cannot ARRAYIFY get_ELEMENT' if ($@);
|
||||
|
||||
my @serialized = (
|
||||
'<test >TestString0</test ><test >TestString1</test >',
|
||||
'<test >TestString0</test ><test >TestString1</test ><test >TestString2</test >',
|
||||
'<test >TestString0</test ><test >TestString1</test ><test >TestString2</test ><test >TestString3</test >',
|
||||
'<test >TestString0</test ><test >TestString1</test ><test >TestString2</test ><test >TestString3</test ><test >TestString4</test >',
|
||||
'<test >TestString0</test ><test >TestString1</test ><test >TestString2</test ><test >TestString3</test ><test >TestString4</test ><test >TestString5</test >',
|
||||
);
|
||||
|
||||
for my $count (1..5) {
|
||||
$obj->test(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({ value => "TestString$count" })
|
||||
);
|
||||
|
||||
is ref $obj->get_test(), 'ARRAY';
|
||||
is @{ $obj->get_test() }, $count+1;
|
||||
|
||||
for my $index (0..$count-1) {
|
||||
is $obj->get_test->[$index], "TestString$index";
|
||||
}
|
||||
is $obj->serialize(), $serialized[$count -1];
|
||||
|
||||
}
|
||||
|
||||
eval {
|
||||
$obj = MyType->new({
|
||||
test => [
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string->new({
|
||||
value => 'Test'
|
||||
}),
|
||||
|
||||
\&CORE::die,
|
||||
],
|
||||
});
|
||||
};
|
||||
like $@, qr{cannot \s use \s CODE}xms;
|
||||
|
||||
eval {
|
||||
$obj = MyType->new({
|
||||
test => \&CORE::die,
|
||||
});
|
||||
};
|
||||
like $@, qr{cannot \s use \s CODE}xms;
|
||||
|
||||
|
||||
eval { $obj->set_FOO(42) };
|
||||
like $@, qr{Can't \s locate \s object \s method}x;
|
||||
|
||||
eval { MyType->set_FOO(42) };
|
||||
like $@, qr{Can't \s locate \s object \s method}x;
|
||||
|
||||
eval { MyType->new({ FOO => 42 }) };
|
||||
like $@, qr{unknown \s field \s}xm;
|
||||
|
||||
my $clone = Storable::thaw( Storable::freeze( $obj ));
|
||||
is $clone->get_test()->[0], 'TestString0';
|
||||
|
||||
eval { SOAP::WSDL::XSD::Typelib::ComplexType::AUTOMETHOD() };
|
||||
like $@, qr{Cannot \s call}xm;
|
||||
|
||||
|
||||
eval { SOAP::WSDL::XSD::Typelib::ComplexType->_factory([], { test => {} }, {}) };
|
||||
like $@, qr{ No \s class \s given \s for \s }xms;
|
||||
|
||||
eval { SOAP::WSDL::XSD::Typelib::ComplexType->_factory([], { test => {} }, { test => 'HopeItDoesntExistOnYourSystem'}) };
|
||||
like $@, qr{ Can't \s locate \s HopeItDoesntExistOnYourSystem.pm }xms;
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package MyElement;
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::string
|
||||
);
|
||||
|
||||
__PACKAGE__->__set_name('MyElement');
|
||||
__PACKAGE__->__set_nillable(1);
|
||||
|
||||
package main;
|
||||
use Test::More tests => 11;
|
||||
|
||||
my $obj;
|
||||
|
||||
# All constructor variants
|
||||
$obj = MyElement->new();
|
||||
$obj = MyElement->new({});
|
||||
$obj = MyElement->new({ value => 'Test' });
|
||||
|
||||
is( MyElement->__get_nillable(), 1);
|
||||
is $obj->__get_nillable, 1;
|
||||
isa_ok $obj, 'MyElement';
|
||||
is $obj->get_value(), 'Test';
|
||||
|
||||
$obj->set_value(undef);
|
||||
is $obj, '<MyElement xsi:nil="true" xmlns="http://www.w3.org/2001/XMLSchema" />';
|
||||
|
||||
$obj->__set_nillable(0);
|
||||
is $obj->__get_nillable(), 0;
|
||||
|
||||
eval { SOAP::WSDL::XSD::Typelib::Element::__get_nillable() };
|
||||
like $@, qr{Cannot \s call}xms;
|
||||
eval { SOAP::WSDL::XSD::Typelib::Element::__set_nillable() };
|
||||
like $@, qr{Cannot \s call}xms;
|
||||
|
||||
is $obj->start_tag({empty => 1}), '<MyElement />';
|
||||
is $obj->start_tag({nil => 1}), '', 'empty string with nil option and NILLABLE false';
|
||||
$obj->set_value('Test');
|
||||
|
||||
|
||||
eval { is @{ $obj }, 1, 'ARRAYIFY' };
|
||||
fail 'ARRAYIFY' if ($@);
|
||||
Reference in New Issue
Block a user