X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flive_engine_request_uri.t;h=39e33450b9f09f0567748dc78b1242eea0207895;hb=f04fdedae056296d0fa97fbdcaa85b9811ca6a5b;hp=b5fc2405834fda2ef6551eb2e658ce9a330e7797;hpb=c7ded7aaf69e506924a5406349fd665c7717acb8;p=catagits%2FCatalyst-Runtime.git diff --git a/t/live_engine_request_uri.t b/t/live_engine_request_uri.t index b5fc240..39e3345 100644 --- a/t/live_engine_request_uri.t +++ b/t/live_engine_request_uri.t @@ -1,12 +1,10 @@ -#!perl - use strict; use warnings; use FindBin; use lib "$FindBin::Bin/lib"; -use Test::More tests => 44; +use Test::More tests => 66; use Catalyst::Test 'TestApp'; use Catalyst::Request; @@ -37,6 +35,21 @@ my $creq; is( $creq->base . $creq->path, $creq->uri, 'Base + Path ok' ); } +# test base is correct for HTTPS URLs +SKIP: +{ + if ( $ENV{CATALYST_SERVER} ) { + skip 'Using remote server', 5; + } + + local $ENV{HTTPS} = 'on'; + ok( my $response = request('https://localhost/engine/request/uri'), 'HTTPS Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); + is( $creq->base, 'https://localhost/', 'HTTPS base ok' ); + is( $creq->uri, 'https://localhost/engine/request/uri', 'HTTPS uri ok' ); +} + # test that we can use semi-colons as separators { my $parameters = { @@ -88,7 +101,7 @@ my $creq; { ok( my $response = request('http://localhost/engine/request/uri/uri_with_object'), 'Request' ); ok( $response->is_success, 'Response Successful 2xx' ); - like( $response->header( 'X-Catalyst-Param-a' ), qr(http://localhost[^/]*/), 'param "a" ok' ); + like( $response->header( 'X-Catalyst-Param-a' ), qr(https?://localhost[^/]*/), 'param "a" ok' ); } # test that uri_with is utf8 safe @@ -104,3 +117,41 @@ my $creq; ok( $response->is_success, 'Response Successful 2xx' ); is( $response->header( 'X-Catalyst-warnings' ), 0, 'no warnings emitted' ); } + +# more tests with undef - should be ignored +{ + my $uri = "http://localhost/engine/request/uri/uri_with_undef_only"; + my ($check) = $uri =~ m{^http://localhost(.+)}; # needed to work with remote servers + ok( my $response = request($uri), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + like( $response->header( 'X-Catalyst-uri-with' ), qr/$check$/, 'uri_with ok' ); + + # try with existing param + $uri = "$uri?x=1"; + ($check) = $uri =~ m{^http://localhost(.+)}; # needed to work with remote servers + $check =~ s/\?/\\\?/g; + ok( $response = request($uri), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + like( $response->header( 'X-Catalyst-uri-with' ), qr/$check$/, 'uri_with ok' ); +} + +{ + my $uri = "http://localhost/engine/request/uri/uri_with_undef_ignore"; + my ($check) = $uri =~ m{^http://localhost(.+)}; # needed to work with remote servers + ok( my $response = request($uri), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + like( $response->header( 'X-Catalyst-uri-with' ), qr/$check\?a=1/, 'uri_with ok' ); + + # remove an existing param + ok( $response = request("${uri}?b=1"), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + like( $response->header( 'X-Catalyst-uri-with' ), qr/$check\?a=1/, 'uri_with ok' ); + + # remove an existing param, leave one, and add a new one + ok( $response = request("${uri}?b=1&c=1"), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + is( $response->header( 'X-Catalyst-Param-a' ), '1', 'param "a" ok' ); + ok( !defined $response->header( 'X-Catalyst-Param-b' ),'param "b" ok' ); + is( $response->header( 'X-Catalyst-Param-c' ), '1', 'param "c" ok' ); +} +