more tests for escaping fragment
John Napiorkowski [Mon, 27 Jul 2015 15:32:38 +0000 (10:32 -0500)]
lib/Catalyst.pm
t/aggregate/unit_core_uri_for.t

index 8bdad88..4ef7047 100644 (file)
@@ -1670,7 +1670,7 @@ sub uri_for {
     $args =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go;
 
     # re-attach fragment on the end of everything after adding params
-    $args .= "#$fragment" if $fragment;
+    $query .= "#$fragment" if $fragment;
 
     my $res = bless(\"${base}${args}${query}", $class);
     $res;
index d3696a2..453d6e0 100644 (file)
@@ -62,9 +62,24 @@ is(
 is(
     Catalyst::uri_for( $context, '/bar#fragment', { param1 => 'value1' } )->as_string,
     'http://127.0.0.1/foo/bar?param1=value1#fragment',
-    'URI for path with fragment and query params'
+    'URI for path with fragment and query params 1'
 );
 
+
+is(
+    Catalyst::uri_for( $context, '/bar#fragment\x{2620}', { param1 => 'value1' } )->as_string,
+    'http://127.0.0.1/foo/bar?param1=value1#fragment%5Cx%7B2620%7D',
+    'URI for path with fragment and query params 2'
+);
+
+
+is(
+    Catalyst::uri_for( $context, '/bar#fragment^%$', { param1 => 'value1' } )->as_string,
+    'http://127.0.0.1/foo/bar?param1=value1#fragment%5E%25%24',
+    'URI for path with fragment and query params 3'
+);
+
+
 # test with utf-8
 is(
     Catalyst::uri_for( $context, 'quux', { param1 => "\x{2620}" } )->as_string,