function it_respects_middleware_sequence(Middleware $m1, Middleware $m2, Middleware $m3, ServerRequestInterface $request, Delegate $delegate, ResponseInterface $response, ResponseInterface $lastResponse) { $m1->process($request, Argument::type(Delegate::class))->will(function ($args) use($lastResponse, $response) { $args[1]->next($args[0]); return $lastResponse; })->shouldBeCalled(); $m2->process($request, Argument::type(Delegate::class))->will(function ($args) { return $args[1]->next($args[0]); })->shouldBeCalled(); $m3->process($request, Argument::type(Delegate::class))->will(function ($args) { return $args[1]->next($args[0]); })->shouldBeCalled(); $delegate->next($request)->willReturn($response)->shouldBeCalled(); $this->withMiddleware($m1)->withMiddleware($m2)->withMiddleware($m3)->process($request, $delegate)->shouldBe($lastResponse); }
/** * @inheritDoc */ public function next(ServerRequestInterface $request) : ResponseInterface { return $this->middleware->process($request, $this->delegate); }