The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/lib";
use Catalyst::Test 'TestApp', {default_host => 'default.com'};
use Catalyst::Request;
use HTTP::Request::Common;

use Test::More;

content_like('/',qr/root/,'content check');
action_ok('/','Action ok ok','normal action ok');
action_redirect('/engine/response/redirect/one','redirect check');
action_notfound('/engine/response/status/s404','notfound check');

# so we can see the default test name
action_ok('/');

contenttype_is('/action/local/one','text/plain','Contenttype check');

### local_request() was not setting response base from base href
{
    my $response = request('/base_href_test');
    is( $response->base, 'http://www.example.com/', 'response base set from base href');
}

my $creq;
my $req = '/dump/request';

{
    eval '$creq = ' . request($req)->content;
    is( $creq->uri->host, 'default.com', 'request targets default host set via import' );
}

{
    local $Catalyst::Test::default_host = 'localized.com';
    eval '$creq = ' . request($req)->content;
    is( $creq->uri->host, 'localized.com', 'target host is mutable via package var' );
}

{
    my %opts = ( host => 'opthash.com' );
    eval '$creq = ' . request($req, \%opts)->content;
    is( $creq->uri->host, $opts{host}, 'target host is mutable via options hashref' );
}

{
	my $response = request( POST( '/bodyparams', { override => 'this' } ) )->content;
    is($response, 'that', 'body param overridden');
}

{
	my $response = request( POST( '/bodyparams/no_params' ) )->content;
    is($response, 'HASH', 'empty body param is hashref');
}

done_testing;