/** * @inheritdoc */ protected function getIdentifier(ServerRequestInterface $request) { /** @var \bitExpert\Pathfinder\RoutingResult $routingResult */ $routingResult = parent::getIdentifier($request); if (!$routingResult || $routingResult->failed()) { return null; } return $routingResult->getRoute()->getTarget(); }
/** * @test */ public function callsNextMiddlewareIfPresentAndActionCouldBeResolved() { $called = false; $next = function (ServerRequestInterface $request, ResponseInterface $response, callable $next = null) use(&$called) : ResponseInterface { $called = true; return $response; }; $resolver = $this->resolvers[0]; $resolver->expects($this->once())->method('resolve')->will($this->returnValue($this->createSimpleAction())); $this->middleware->__invoke($this->request, $this->response, $next); $this->assertTrue($called); }
/** * @test */ public function beforeExecuteResponderMiddlewareWillBeCalledBeforeResponderExecutorMiddleware() { $expectedOrder = ['beforeExecuteResponder', 'executeResponder']; $order = []; $this->actionResolverMiddleware->expects($this->any())->method('__invoke')->will($this->returnCallback($this->createTestMiddleware())); $this->actionExecutorMiddleware->expects($this->any())->method('__invoke')->will($this->returnCallback($this->createTestMiddleware())); $this->responderResolverMiddleware->expects($this->any())->method('__invoke')->will($this->returnCallback($this->createTestMiddleware())); $beforeExecuteResponderMiddleware = $this->createTestMiddleware(function () use(&$order) { $order[] = 'beforeExecuteResponder'; }); $responderExecutorMiddlewareStub = $this->createTestMiddleware(function () use(&$order) { $order[] = 'executeResponder'; }); $this->responderExecutorMiddleware->expects($this->any())->method('__invoke')->will($this->returnCallback($responderExecutorMiddlewareStub)); $middleware = $this->getMockedAdroitMiddleware(); $middleware->beforeExecuteResponder($beforeExecuteResponderMiddleware); $middleware->__invoke($this->request, $this->response); $this->assertEquals($order, $expectedOrder); }