Fix http server test, which also runs all the tests at a sub-path
[catagits/Catalyst-Runtime.git] / t / aggregate / live_component_controller_action_chained.t
index 20349df..b4907f7 100644 (file)
@@ -865,12 +865,9 @@ sub run_tests {
 
         ok( my $response = request('http://localhost/chained/mult_nopp2/action'),
             "Complex path with multiple non-capturing pathparts" );
-        TODO: {
-        local $TODO = 'Known bug';
         is( $response->header('X-Catalyst-Executed'),
             $expected, 'Executed actions' );
         is( $response->content, '; ', 'Content OK' );
-        }
     }
 
     #
@@ -1111,10 +1108,30 @@ sub run_tests {
         ok( my $content =
             get('http://localhost/' . $path),
             'request ' . $path . ' ok');
+        my $exp = URI->new('http://localhost:3000' . $path);
+        my ($want) = $content =~ m{/chained/(.*)};
+        my $got = URI->new('http://localhost:3000/chained/' . $want);
         # Just check that the path matches, as who the hell knows or cares
         # where the app is based (live tests etc)
-        ok( index($content, $path) > 1, 'uri can round trip through uri_for' )
+        is $got->path, $exp->path, "uri $path can round trip through uri_for (path)"
             or diag("Expected $path, got $content");
+        my %got_q = map { split /=/ } split /\&/, ($got->query||'');
+        my %exp_q = map { split /=/ } split /\&/, ($exp->query||'');
+        is_deeply \%got_q, \%exp_q, "uri $path can round trip through uri_for (query)"
+            or diag("Expected $path, got $content");
+    }
+
+    #
+    #   match_captures
+    #
+    {
+
+        ok( my $response = request('http://localhost/chained/match_captures/foo/bar'), 'match_captures: falling through' );
+        is($response->header('X-TestAppActionTestMatchCaptures'), 'fallthrough', 'match_captures: fell through');
+
+        ok($response = request('http://localhost/chained/match_captures/force/bar'), 'match_captures: *not* falling through' );
+        is($response->header('X-TestAppActionTestMatchCaptures'), 'forcing', 'match_captures: forced');
+        is($response->header('X-TestAppActionTestMatchCapturesHasRan'), 'yes', 'match_captures: actually ran');
     }
 }