#!/bin/env perl
BEGIN {
unless(grep /blib/, @INC) {
chdir 't' if -d 't';
unshift @INC, '../lib' if -d '../lib';
}
}
use strict;
use Test;
use UDDI::Lite
import => 'UDDI::Data',
import => 'UDDI::Lite',
proxy => 'http://uddi.microsoft.com/inquire';
my($a, $s, $r, $serialized, $deserialized);
# ------------------------------------------------------
use SOAP::Test;
$s = SOAP::Lite->uri('http://something/somewhere')->proxy('http://uddi.microsoft.com/inquire')->on_fault(sub{});
eval { $s->transport->timeout($SOAP::Test::TIMEOUT = $SOAP::Test::TIMEOUT) };
$r = $s->test_connection;
unless (defined $r && defined $r->envelope) {
print "1..0 # Skip: ", $s->transport->status, "\n";
exit;
}
# ------------------------------------------------------
plan tests => 21;
{
$a = bindingTemplate([
accessPoint('someurl'),
tModelInstanceDetails(
tModelInstanceInfo(
description('some tModel')
)->tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4')
)
])->bindingKey('');
ok(ref $a eq 'UDDI::Data');
ok($a->accessPoint eq 'someurl');
ok($a->tModelInstanceDetails->tModelInstanceInfo->description eq 'some tModel');
ok($a->bindingKey eq '');
$a = tModelInstanceInfo;
ok(ref $a eq 'UDDI::Data');
my @syntaxes = map { UDDI::Serializer->serialize($_) } (
# syntax 1
findQualifiers(findQualifier('sortByNameAsc',
'caseSensitiveMatch')),
# syntax 2
findQualifiers([findQualifier('sortByNameAsc'),
findQualifier('caseSensitiveMatch')]),
# syntax 3
# WARNING! don't forget to put brakets if you use with
# and this is not the last expression in the list
with(findQualifiers =>
findQualifier('sortByNameAsc'),
findQualifier('caseSensitiveMatch'),
),
# syntax 4
findQualifiers->with(
findQualifier('sortByNameAsc'),
findQualifier('caseSensitiveMatch'),
),
# syntax 5
with findQualifiers =>
findQualifier => 'sortByNameAsc',
findQualifier => 'caseSensitiveMatch',
);
# all syntaxes should give the same serialized string
for (1..4) {
ok($syntaxes[0], $syntaxes[$_]);
}
@syntaxes = map { UDDI::Serializer->serialize($_) } (
# syntax 1
do {
my $tmodels = tModelInstanceDetails(
tModelInstanceInfo(
description('some tModel')
)->tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4')
);
bindingTemplate([
accessPoint('someurl')->attr({foo => 'bar'}),
$tmodels
])->bindingKey('');
},
# syntax 2
bindingTemplate([
accessPoint('someurl')->attr({foo => 'bar'}),
tModelInstanceDetails(
tModelInstanceInfo(
description('some tModel')
)->tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4')
)
])->bindingKey(''),
# syntax 3
do {
my $tmodels = tModelInstanceDetails(
tModelInstanceInfo(
description('some tModel')
)->tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4')
);
my $ap = accessPoint('someurl');
$ap->attr({foo => 'bar'});
with bindingTemplate =>
$ap,
$tmodels,
bindingKey => ''
},
# syntax 4
with bindingTemplate =>
accessPoint('someurl')->attr({foo => 'bar'}),
tModelInstanceDetails =>
tModelInstanceInfo(
description('some tModel')
)->tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4'),
bindingKey(''),
);
# all syntaxes should give the same serialized string
for (1..3) {
ok($syntaxes[0], $syntaxes[$_]);
}
# testing UDDI::Data and alternative syntaxes
@syntaxes = map { UDDI::Serializer->serialize($_) } (
# syntax 1
businessEntity(name('old')),
# syntax 2
businessEntity(UDDI::Data->name(name => 'old')),
# syntax 3
businessEntity(UDDI::Data->name('name')->value('old')),
# syntax 4
# while there is also method(name => 'old') syntax
# it only works for UDDI methods, like find_business:
# find_business(name => 'old')
# and doesn't work for all other data elements
);
# all syntaxes should give the same serialized string
for (1..2) {
ok($syntaxes[0], $syntaxes[$_]);
}
# testing attributes
my $u = UDDI::Data->name(name => 'old')->attr({foo => 'bar'});
ok($u->attr->{'foo'} eq 'bar');
@syntaxes = map { UDDI::Serializer->serialize($_) } (
# syntax 1
UDDI::Data->name(name => 'old')->attr({foo => 'bar'}),
# syntax 2
name({foo => 'bar'}, 'old'),
);
# all syntaxes should give the same serialized string
for (1..1) {
ok($syntaxes[0], $syntaxes[$_]);
}
}
{
# UDDI access
print "UDDI access test(s)...\n";
my $proxy = 'http://uddi.microsoft.com/inquire';
my $uddi = new UDDI::Lite proxy => $proxy;
my @parameters = (
findQualifiers(findQualifier('sortByNameAsc',
'caseSensitiveMatch')),
name('M'),
);
ok(ref $parameters[0] eq 'UDDI::Data');
$r = $uddi->find_business({maxRows => 1}, @parameters)->result;
ok(defined $r);
ok(@{[$r->businessInfos->businessInfo]} == 1); # test for maxRows
$r = $uddi->find_business(@parameters)->result;
for ($r->businessInfos->businessInfo) {
print $_->name, "\n";
if ($_->name eq "Microsoft Corporation") {
my $key = $_->businessKey;
print "$key\n";
ok($key =~ /.{8}-.{4}-.{4}-.{4}-.{12}/);
my $e = $uddi->get_businessDetail($key)->result->businessEntity;
my @services = $e->businessServices->businessService;
ok(@services > 1);
for (@services) {
print " ", $_->name, "\n";
}
}
}
}