File: Transport.t

package info (click to toggle)
libsoap-wsdl-perl 3.003-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,860 kB
  • sloc: perl: 8,431; xml: 1,769; java: 19; makefile: 15
file content (66 lines) | stat: -rw-r--r-- 2,855 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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');