#!perl use strict; use warnings; use FindBin; use lib "$FindBin::Bin/lib"; use Test::More tests => 9; use Catalyst; use Catalyst::Test 'TestApp'; use Catalyst::Request; my ( $creq, $context ); # test that req->base and c->uri_for work correctly after a redirected request { my $path = '/engine/request/uri/Rx(here)'; my $uri = 'http://localhost' . $path; local $ENV{REDIRECT_URL} = $path; local $ENV{PATH_INFO} = $path; ok( my $response = request($uri), 'Request' ); ok( $response->is_success, 'Response Successful 2xx' ); ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); ok( $context = Catalyst->new({ request => $creq, }), "Created a context from request" ); is( $creq->path, 'engine/request/uri/Rx(here)', 'URI contains correct path' ); is( $creq->base, 'http://localhost/', 'Base is correct' ); is( $context->uri_for("/bar/baz")->as_string, "http://localhost/bar/baz", "uri_for creates correct URI from app root" ); is( $context->uri_for("foo/qux")->as_string, "http://localhost/foo/qux", "uri_for creates correct URI" ); is( $creq->path, 'engine/request/uri/Rx(here)', 'URI contains correct path' ); }