Business-cXML
view release on metacpan or search on metacpan
lib/Business/cXML.pm view on Meta::CPAN
my $ua = new LWP::UserAgent;
$ua->agent($Business::cXML::USERAGENT);
$ua->timeout(30);
my $res = $ua->post(
$self->{remote},
'Content-Type' => 'text/xml; charset="UTF-8"',
'Content' => $req,
);
if ($res->is_success) {
$res = $res->decoded_content;
my $msg = new Business::cXML::Transmission $res;
unless (defined blessed($msg)) {
# We have an error status code
return $self->_warning('send(21) ' . ($msg->[0] == 406 ? 'response XML validation' : 'response cXML traversal') . ' failure', $res);
};
$self->_notice("send() received HTTP response", $res, $msg);
return $msg;
} else {
return $self->_warning("send(22) had network failure", $req, $obj);
};
t/api-outgoing.t view on Meta::CPAN
my ($self, $arg) = @_;
$self->{timeout} = $arg if defined $arg;
return $self->{timeout};
});
$lwp->mock('agent', sub {
my ($self, $arg) = @_;
$self->{agent} = $arg if defined $arg;
return $self->{agent};
});
$lwp->mock(is_success => 1);
$lwp->mock(decoded_content => scalar(read_file('t/xml-assets/profile-response.xml')));
$lwp->mock('post', sub {
my ($self, $url, %args) = @_;
return $self;
});
my $res = $cxml->send($req);
cmp_deeply(
comparable(XML::LibXML->load_xml(string => scalar($res->toString))),
comparable(XML::LibXML->load_xml(location => 't/xml-assets/profile-response.xml')),
'Fake network I/O behaved as expected'
);
$res = $cxml->send($req->{string}); # Should exist, send() calls freeze()
cmp_deeply(
comparable(XML::LibXML->load_xml(string => scalar($res->toString))),
comparable(XML::LibXML->load_xml(location => 't/xml-assets/profile-response.xml')),
'Fake network I/O behaved as expected'
);
$lwp->mock(decoded_content => scalar(read_file('t/xml-assets/garbage-response.xml')));
$res = $cxml->send($req);
ok(!defined $res, 'Garbage response returns undefined');
$lwp->mock(decoded_content => scalar(read_file('t/xml-assets/unintelligible-response.xml')));
$res = $cxml->send($req);
ok(!defined $res, 'Unintelligible XML response returns undefined');
$lwp->mock(is_success => 0);
$res = $cxml->send($req);
ok(!defined $res, 'Network failure returns undefined');
$lwp->mock(is_success => 1);
$req->thaw();
$req->xml_payload->add('GarbageNode', 'This triggers a validation error');
( run in 0.340 second using v1.01-cache-2.11-cpan-26ccb49234f )