/**
  * @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);
 }