Skip to content

Commit

Permalink
Ensure RoutingMiddleware does not wipe off existing params keys.
Browse files Browse the repository at this point in the history
Closes #10989
  • Loading branch information
ADmad committed Aug 3, 2017
1 parent 51f9ab8 commit 11a742e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Routing/Middleware/RoutingMiddleware.php
Expand Up @@ -88,7 +88,7 @@ public function __invoke(ServerRequestInterface $request, ResponseInterface $res
if (is_array($parsedBody) && isset($parsedBody['_method'])) {
$request = $request->withMethod($parsedBody['_method']);
}
$params = Router::parseRequest($request);
$params = Router::parseRequest($request) + $params;
if (isset($params['_middleware'])) {
$middleware = $params['_middleware'];
unset($params['_middleware']);
Expand Down
25 changes: 25 additions & 0 deletions tests/TestCase/Routing/Middleware/RoutingMiddlewareTest.php
Expand Up @@ -105,6 +105,31 @@ public function testRouterSetParams()
$middleware($request, $response, $next);
}

/**
* Test routing middleware does wipe off existing params keys.
*
* @return void
*/
public function testPreservingExistingParams()
{
$request = ServerRequestFactory::fromGlobals(['REQUEST_URI' => '/articles']);
$request = $request->withAttribute('params', ['_csrfToken' => 'i-am-groot']);
$response = new Response();
$next = function ($req, $res) {
$expected = [
'controller' => 'Articles',
'action' => 'index',
'plugin' => null,
'pass' => [],
'_matchedRoute' => '/articles',
'_csrfToken' => 'i-am-groot'
];
$this->assertEquals($expected, $req->getAttribute('params'));
};
$middleware = new RoutingMiddleware();
$middleware($request, $response, $next);
}

/**
* Test middleware invoking hook method
*
Expand Down

0 comments on commit 11a742e

Please sign in to comment.