summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold Daniels <arnold@jasny.net>2016-11-29 13:36:31 +0100
committerArnold Daniels <arnold@jasny.net>2016-11-29 13:36:31 +0100
commit2ab3d5087944baf87980c234d7e73958f65261a1 (patch)
tree58042bd1bf8ed3eed1514525af11f4e8a58699d2
parentfb4bba481c8ce95749ade5a162e566eb15e6d321 (diff)
downloadrouter-2ab3d5087944baf87980c234d7e73958f65261a1.zip
router-2ab3d5087944baf87980c234d7e73958f65261a1.tar.gz
router-2ab3d5087944baf87980c234d7e73958f65261a1.tar.bz2
Reversed the middleware order
Fixed Router middleware tests
-rw-r--r--src/Router.php2
-rw-r--r--tests/RouterTest.php19
2 files changed, 13 insertions, 8 deletions
diff --git a/src/Router.php b/src/Router.php
index 1957f91..63a8fbc 100644
--- a/src/Router.php
+++ b/src/Router.php
@@ -175,7 +175,7 @@ class Router
return $this->run($request, $response, $next);
}
- $stack = array_merge([[$this, 'run']], $this->middlewares);
+ $stack = array_reverse(array_merge($this->middlewares, [[$this, 'run']]));
// Turn the stack into a call chain
foreach ($stack as $handle) {
diff --git a/tests/RouterTest.php b/tests/RouterTest.php
index 3746574..e1c080c 100644
--- a/tests/RouterTest.php
+++ b/tests/RouterTest.php
@@ -181,9 +181,9 @@ class RouterTest extends \PHPUnit_Framework_TestCase
}
/**
- * Test executing router with middlewares chain (test only execution order)
+ * Test executing router with middlewares chain
*/
- public function testRunMiddlewares()
+ public function testRunWithMiddlewares()
{
$route = $this->createMock(Route::class);
@@ -191,9 +191,12 @@ class RouterTest extends \PHPUnit_Framework_TestCase
$uri->method('getPath')->willReturn('/');
$request = $this->createMock(ServerRequestInterface::class);
- $request->expects($this->once())->method('withAttribute')->with('route')->willReturn($request);
+ $request->method('getUri')->willReturn($uri);
+
$requestOne = $this->createMock(ServerRequestInterface::class);
+ $requestOne->expects($this->never())->method('withAttribute');
$requestTwo = $this->createMock(ServerRequestInterface::class);
+ $requestTwo->expects($this->once())->method('withAttribute')->with('route')->willReturn($requestTwo);
$response = $this->createMock(ResponseInterface::class);
$responseOne = $this->createMock(ResponseInterface::class);
@@ -225,16 +228,16 @@ class RouterTest extends \PHPUnit_Framework_TestCase
$router->add($middlewareOne);
$router->add($middlewareTwo);
-
+
$result = $router($request, $response);
$this->assertSame($finalResponse, $result);
}
/**
- * Test executing router with middlewares chain (test only execution order)
+ * Test executing router with middlewares chain where each middleware is only applied for specific paths
*/
- public function testRunMiddlewaresByPath()
+ public function testRunWithMiddlewaresByPath()
{
$route = $this->createMock(Route::class);
@@ -242,9 +245,11 @@ class RouterTest extends \PHPUnit_Framework_TestCase
$uri->method('getPath')->willReturn('/foo/bar');
$request = $this->createMock(ServerRequestInterface::class);
- $request->expects($this->once())->method('withAttribute')->with('route')->willReturn($request);
$request->method('getUri')->willReturn($uri);
+
$requestOne = $this->createMock(ServerRequestInterface::class);
+ $requestOne->expects($this->once())->method('withAttribute')->with('route')->willReturn($requestOne);
+ $requestOne->method('getUri')->willReturn($uri);
$response = $this->createMock(ResponseInterface::class);
$responseOne = $this->createMock(ResponseInterface::class);