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.360 second using v1.01-cache-2.11-cpan-26ccb49234f )