diff --git a/src/Routing/Router.php b/src/Routing/Router.php index 131e510..e44ba69 100644 --- a/src/Routing/Router.php +++ b/src/Routing/Router.php @@ -65,6 +65,9 @@ class Router implements RouterInterface public function register($method, $target, $middleware) { $route = $this->getRouteForTarget($target); + if (is_array($middleware)) { + $middleware = $this->dispatchProvider->getDispatchStack($middleware); + } $route->getMethodMap()->register($method, $middleware); return $this; } diff --git a/test/tests/unit/Routing/RouterTest.php b/test/tests/unit/Routing/RouterTest.php index 73aa6a3..a372f09 100644 --- a/test/tests/unit/Routing/RouterTest.php +++ b/test/tests/unit/Routing/RouterTest.php @@ -116,6 +116,18 @@ class RouterTest extends \PHPUnit_Framework_TestCase $this->methodMap->register("GET", "middleware")->shouldHaveBeenCalled(); } + /** + * @covers ::register + */ + public function testCreatesDispatchStackForMiddlewareArray() + { + $stack = $this->prophesize('WellRESTed\MiddlewareInterface'); + $this->dispatchProvider->getDispatchStack(Argument::any())->willReturn($stack->reveal()); + + $this->router->register("GET", "/", ["middleware1", "middleware2"]); + $this->methodMap->register("GET", $stack->reveal())->shouldHaveBeenCalled(); + } + // ------------------------------------------------------------------------ // Dispatching