diff options
author | Arnold Daniels <arnold@jasny.net> | 2016-11-29 13:36:31 +0100 |
---|---|---|
committer | Arnold Daniels <arnold@jasny.net> | 2016-11-29 13:36:31 +0100 |
commit | 2ab3d5087944baf87980c234d7e73958f65261a1 (patch) | |
tree | 58042bd1bf8ed3eed1514525af11f4e8a58699d2 | |
parent | fb4bba481c8ce95749ade5a162e566eb15e6d321 (diff) | |
download | router-2ab3d5087944baf87980c234d7e73958f65261a1.zip router-2ab3d5087944baf87980c234d7e73958f65261a1.tar.gz router-2ab3d5087944baf87980c234d7e73958f65261a1.tar.bz2 |
Reversed the middleware order
Fixed Router middleware tests
-rw-r--r-- | src/Router.php | 2 | ||||
-rw-r--r-- | tests/RouterTest.php | 19 |
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); |