NAME

Test2::Tools::HTTP::Tx - Object representing the last transaction for Test2::Tools::HTTP

VERSION

version 0.12

SYNOPSIS

use Test2::V0;
use Test2::Tools::HTTP;
use HTTP::Request::Common;

http_request GET('http://example.test');

# get the HTTP::Request/Response object
my $req = http_tx->req;
my $res = http_tx->res;

# send a diagnostic of the most recent
# transaction as a note.
http_tx->note;

done_testing;

DESCRIPTION

This class provides an interface to the most recent transaction performed by http_request in Test2::Tools::HTTP.

METHODS

req

my $req = http_tx->req;

The HTTP::Request object.

res

my $res = http_tx->res;

The HTTP::Response object. May or may not be defined in the case of a connection error.

ok

my $bool = http_tx->ok;

True if the most recent call to http_request passed.

connection_error

my $string = http_tx->connection_error;

The connection error if any from the most recent http_reequest.

location

The Location header converted to an absolute URL, if provided by the response.

note

http_tx->note;

Send the request, response and ok to Test2's "note" output. Note that the message bodies may be decoded, but the headers will not be modified.

diag

Send the request, response and ok to Test2's "diag" output. Note that the message bodies may be decoded, but the headers will not be modified.

add_helper

Test2::Tools::HTTP::Tx->add_helper( $name, $code );

Adds a transaction helper to the given class. For example.

Test2::Tools::HTTP::Tx->add_helper( 'tx.foo' => sub {
  my $tx = shift;
  ...
} );
Test2::Tools::HTTP::Tx->add_helper( 'req.bar' => sub {
  my $req = shift;
  ...
} );
Test2::Tools::HTTP::Tx->add_helper( 'res.baz' => sub {
  my $res = shift;
  ...
} );

Lets you call these helpers thus:

http_tx->foo;
http_tx->req->bar;
http_tx->res->baz;

A useful application of this technique is to provide conversion of the response body:

use JSON::PP qw( decode_json );
Test2::Tools::HTTP::Tx->add_helper( 'res.json' => sub {
  my $res = shift;
  decode_json( $res->decoded_content );
});

You cannot add helpers that replace existing methods.

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018-2022 by Graham Ollis.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.