git-cpan-module: SOAP-WSDL git-cpan-version: 2.00.01 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00.01.tar.gz
67 lines
2.8 KiB
Perl
67 lines
2.8 KiB
Perl
use strict;
|
|
use warnings;
|
|
use Test::More tests => 15;
|
|
use Scalar::Util qw(blessed);
|
|
use SOAP::WSDL::Factory::Transport;
|
|
|
|
eval { SOAP::WSDL::Factory::Transport->get_transport('') };
|
|
like $@, qr{^no transport};
|
|
|
|
eval { SOAP::WSDL::Factory::Transport->get_transport('zumsl') };
|
|
like $@, qr{^no transport};
|
|
|
|
my $obj;
|
|
|
|
SKIP: {
|
|
# fake absence of SOAP::Lite
|
|
eval q{ use Test::Without::Module qw(SOAP::Transport::HTTP); 1; }
|
|
or skip "cannot fake absence of modules without Test::Without::Module", 7;
|
|
|
|
# fake absence of SOAP::WSDL::Transport::HTTP - must throw error
|
|
eval q{ use Test::Without::Module qw(SOAP::WSDL::Transport::HTTP); };
|
|
eval { SOAP::WSDL::Factory::Transport->get_transport('http') };
|
|
like $@, qr{Cannot \s load \s transport \s class \s SOAP::WSDL::Transport::HTTP}x;
|
|
|
|
# try again - but now allow to load
|
|
eval q{ no Test::Without::Module qw(SOAP::WSDL::Transport::HTTP); };
|
|
ok $obj = SOAP::WSDL::Factory::Transport->get_transport('http'), 'load backend';
|
|
ok $obj->isa('SOAP::WSDL::Transport::HTTP'), 'load SOAP::WSDL::Transport::HTTP';
|
|
|
|
# Play it again to test what happens when it's loaded
|
|
# make loading fail (with Test::Without::Module), to make sure we
|
|
# don't load it again
|
|
eval q{ use Test::Without::Module qw(SOAP::WSDL::Transport::HTTP); };
|
|
ok $obj = SOAP::WSDL::Factory::Transport->get_transport('http'), 'get backend without loading';
|
|
ok $obj->isa('SOAP::WSDL::Transport::HTTP'), 'load SOAP::WSDL::Transport::HTTP';
|
|
|
|
eval q{ no Test::Without::Module qw(SOAP::WSDL::Transport::HTTP); };
|
|
eval q{ no Test::Without::Module qw(SOAP::Transport::HTTP); };
|
|
|
|
eval q{ require SOAP::Lite }
|
|
or skip q{Cannot test loading SOAP::Lite's transport backend without SOAP::Lite}, 2;
|
|
|
|
# try to load with SOAP::Lite install
|
|
ok $obj = SOAP::WSDL::Factory::Transport->get_transport('http'), 'load backend';
|
|
ok $obj->isa('SOAP::Transport::HTTP::Client'), 'load SOAP::Transport::HTTP::Client backend';
|
|
}
|
|
|
|
ok $obj = SOAP::WSDL::Factory::Transport->get_transport('http');
|
|
ok blessed $obj;
|
|
|
|
|
|
SOAP::WSDL::Factory::Transport->register('zumsl', 'Hope_You_Have_No_Such_Package_Installed');
|
|
|
|
eval { SOAP::WSDL::Factory::Transport->get_transport('zumsl:foo') };
|
|
like $@, qr{^Cannot load};
|
|
|
|
eval { SOAP::WSDL::Factory::Transport->register( \'zumsl', 'Foo') };
|
|
like $@, qr{^Cannot use reference};
|
|
|
|
# register and load a previously loaded backend
|
|
SOAP::WSDL::Factory::Transport->register( 'zumsl', 'SOAP::WSDL::Transport::HTTP');
|
|
isa_ok( SOAP::WSDL::Factory::Transport->get_transport('zumsl:foo'), 'SOAP::WSDL::Transport::HTTP');
|
|
|
|
# register and load a previously unloaded backend
|
|
SOAP::WSDL::Factory::Transport->register( 'zumsl', 'SOAP::WSDL::Transport::Loopback');
|
|
isa_ok(SOAP::WSDL::Factory::Transport->get_transport('zumsl:foo'), 'SOAP::WSDL::Transport::Loopback');
|