version 0.56
[catagits/Test-WWW-Mechanize-Catalyst.git] / lib / Test / WWW / Mechanize / Catalyst.pm
index 8f2f53c..819c5dc 100644 (file)
@@ -12,7 +12,7 @@ extends 'Test::WWW::Mechanize', 'Moose::Object';
 
 #use namespace::clean -execept => 'meta';
 
-our $VERSION = '0.52';
+our $VERSION = '0.56';
 our $APP_CLASS;
 my $Test = Test::Builder->new();
 
@@ -126,6 +126,18 @@ 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;
+      $host .= ':'.$request->uri->_port if $request->uri->_port;
+      $request->header('Host', $host);
+    }
+}
+
 sub _do_catalyst_request {
     my ($self, $request) = @_;
 
@@ -140,22 +152,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 +224,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);
 }