},
action_ok => sub {
my $action = shift;
- return Test::More->builder->ok($request->($action)->is_success, @_);
+ my $meth = $request->($action)->request->method;
+ my @args = @_ ? @_ : ("$meth $action returns successfully");
+ return Test::More->builder->ok($request->($action)->is_success,@args);
},
action_redirect => sub {
my $action = shift;
- return Test::More->builder->ok($request->($action)->is_redirect,@_);
+ my $meth = $request->($action)->request->method;
+ my @args = @_ ? @_ : ("$meth $action returns a redirect");
+ return Test::More->builder->ok($request->($action)->is_redirect,@args);
},
action_notfound => sub {
my $action = shift;
- return Test::More->builder->is_eq($request->($action)->code,404,@_);
+ my $meth = $request->($action)->request->method;
+ my @args = @_ ? @_ : ("$meth $action returns a 404");
+ return Test::More->builder->is_eq($request->($action)->code,404,@args);
},
contenttype_is => sub {
my $action = shift;
sub _remote_request {
require LWP::UserAgent;
+ local $Plack::Test::Impl = 'ExternalServer';
my $request = Catalyst::Utils::request( shift(@_) );
my $server = URI->new( $ENV{CATALYST_SERVER} );
if ($server->path) {
# If request path is '/', we have to add a trailing slash to the
# final request URI
- my $add_trailing = $request->uri->path eq '/';
+ my $add_trailing = ($request->uri->path eq '/' || $request->uri->path eq '') ? 1 : 0;
my @sp = split '/', $server->path;
my @rp = split '/', $request->uri->path;
}
}
- $request->uri->scheme( $server->scheme );
- $request->uri->host( $server->host );
- $request->uri->port( $server->port );
- $request->uri->path( $server->path . $request->uri->path );
-
unless ($agent) {
-
$agent = LWP::UserAgent->new(
keep_alive => 1,
max_redirect => 0,
$agent->env_proxy;
}
- return $agent->request($request);
+ my $ret;
+ test_psgi
+ ua => $agent,
+ uri => $server,
+ client => sub {
+ my ($psgi_app) = @_;
+ $ret = $psgi_app->($request);
+ };
+
+ return $ret;
}
for my $name (qw(local_request remote_request)) {
}
}
-=head2 action_ok
+=head2 action_ok($url [, $test_name ])
-Fetches the given URL and checks that the request was successful.
+Fetches the given URL and checks that the request was successful. An optional
+second argument can be given to specify the name of the test.
-=head2 action_redirect
+=head2 action_redirect($url [, $test_name ])
-Fetches the given URL and checks that the request was a redirect.
+Fetches the given URL and checks that the request was a redirect. An optional
+second argument can be given to specify the name of the test.
-=head2 action_notfound
+=head2 action_notfound($url [, $test_name ])
-Fetches the given URL and checks that the request was not found.
+Fetches the given URL and checks that the request was not found. An optional
+second argument can be given to specify the name of the test.
-=head2 content_like( $url, $regexp [, $test_name] )
+=head2 content_like( $url, $regexp [, $test_name ] )
-Fetches the given URL and returns whether the content matches the regexp.
+Fetches the given URL and returns whether the content matches the regexp. An
+optional third argument can be given to specify the name of the test.
-=head2 contenttype_is
+=head2 contenttype_is($url, $type [, $test_name ])
-Check for given MIME type.
+Verify the given URL has a content type of $type and optionally specify a test name.
=head1 SEE ALSO