X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FTest%2FWWW%2FMechanize%2FCatalyst.pm;h=0cd3ef52b661f1496c9b7dfd84485c8bd1f4992c;hb=39ba6f9a7186eeac9e5f1be7c2de248d87740b3e;hp=e13243075ee7dd5dc54d436019d0f1f69c3085ab;hpb=63893c19e779e916d46b67a19b744cc665ec3aff;p=catagits%2FTest-WWW-Mechanize-Catalyst.git diff --git a/lib/Test/WWW/Mechanize/Catalyst.pm b/lib/Test/WWW/Mechanize/Catalyst.pm index e132430..0cd3ef5 100644 --- a/lib/Test/WWW/Mechanize/Catalyst.pm +++ b/lib/Test/WWW/Mechanize/Catalyst.pm @@ -12,7 +12,7 @@ extends 'Test::WWW::Mechanize', 'Moose::Object'; #use namespace::clean -execept => 'meta'; -our $VERSION = '0.51'; +our $VERSION = '0.55'; our $APP_CLASS; my $Test = Test::Builder->new(); @@ -126,6 +126,17 @@ sub _make_request { return $response; } +sub _set_host_header { + my ( $self, $request ) = @_; + # If there's no Host header, set one. + unless ($request->header('Host')) { + my $host = $self->has_host + ? $self->host + : $request->uri->host; + $request->header('Host', $host); + } +} + sub _do_catalyst_request { my ($self, $request) = @_; @@ -140,22 +151,19 @@ sub _do_catalyst_request { return $self->_do_remote_request($request) if $ENV{CATALYST_SERVER}; - # If there's no Host header, set one. - unless ($request->header('Host')) { - my $host = $self->has_host - ? $self->host - : $uri->host; + $self->_set_host_header($request); - $request->header('Host', $host); - } - my $res = $self->_check_external_request($request); return $res if $res; my @creds = $self->get_basic_credentials( "Basic", $uri ); $request->authorization_basic( @creds ) if @creds; - my $response =Catalyst::Test::local_request($self->{catalyst_app}, $request); + require Catalyst; + my $response = $Catalyst::VERSION >= 5.89000 ? + Catalyst::Test::_local_request($self->{catalyst_app}, $request) : + Catalyst::Test::local_request($self->{catalyst_app}, $request); + # LWP would normally do this, but we dont get down that far. $response->request($request); @@ -215,6 +223,7 @@ sub _do_remote_request { $request->uri->host( $server->host ); $request->uri->port( $server->port ); $request->uri->path( $server->path . $request->uri->path ); + $self->_set_host_header($request); return $self->SUPER::_make_request($request); } @@ -263,7 +272,7 @@ L is an elegant MVC Web Application Framework. L is a subclass of L that incorporates features for web application testing. The L module meshes the two to allow easy testing of L applications without -needing to starting up a web server. +needing to start up a web server. Testing web applications has always been a bit tricky, normally requiring starting a web server for your application and making real HTTP @@ -312,12 +321,12 @@ This module supports cookies automatically. To use this module you must pass it the name of the application. See the SYNOPSIS above. -Note that Catalyst has a special developing feature: the debug +Note that Catalyst has a special development feature: the debug screen. By default this module will treat responses which are the debug screen as failures. If you actually want to test debug screens, please use: - $mmech->{catalyst_debug} = 1; + $mech->{catalyst_debug} = 1; An alternative to this module is L. @@ -340,7 +349,7 @@ Links which do not begin with / or are not for localhost can be handled as normal Web requests - this is handy if you have an external single sign-on system. You must set allow_external to true for this: - $m->allow_external(1); + $mech->allow_external(1); head2 catalyst_app @@ -386,7 +395,7 @@ Tells if the title of the page does NOT match the given regex. =head2 $mech->content_is( $str [, $desc ] ) -Tells if the content of the page matches the given string +Tells if the content of the page matches the given string. =head2 $mech->content_contains( $str [, $desc ] ) @@ -475,7 +484,7 @@ or a scalar URL name. =head2 $mech->link_content_unlike( $links, $regex [, $desc ] ) -Check the current page for specified links and test the content of each +Check the current page for specified links and test that the content of each does not match I<$regex>. The links may be specified as a reference to an array containing L objects, an array of URLs, or a scalar URL name. @@ -494,7 +503,7 @@ I<%parms> is a hashref containing the params to pass to C. Note that the params to C are a hash whereas the parms to this function are a hashref. You have to call this function like: - $agent->follow_like_ok( {n=>3}, "looking for 3rd link" ); + $agent->follow_link_ok( {n=>3}, "looking for 3rd link" ); As with other test functions, C<$comment> is optional. If it is supplied then it will display when running the test harness in verbose mode. @@ -510,11 +519,11 @@ is not available. If you use non-fully qualified urls in your test scripts (i.e. anything without a host, such as C<< ->get_ok( "/foo") >> ) and your app redirects to an external URL, expect to be bitten once you come back to your application's urls -(it will try to request them on the remote server.) This is due to a limitation +(it will try to request them on the remote server). This is due to a limitation in WWW::Mechanize. One workaround for this is that if you are expecting to redirect to an external -site, clone the TWMC obeject and use the cloned object for the external +site, clone the TWMC object and use the cloned object for the external redirect. @@ -531,7 +540,7 @@ Original Author: Leon Brocard, C<< >> =head1 COPYRIGHT -Copyright (C) 2005-8, Leon Brocard +Copyright (C) 2005-9, Leon Brocard =head1 LICENSE