diff --git a/tests/MiddlewareRunnerTest.php b/tests/MiddlewareRunnerTest.php index 5b01767e..3b1ac720 100644 --- a/tests/MiddlewareRunnerTest.php +++ b/tests/MiddlewareRunnerTest.php @@ -3,6 +3,7 @@ namespace React\Tests\Http; use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; use React\EventLoop\Factory; use React\Http\MiddlewareRunner; use React\Http\ServerRequest; @@ -88,4 +89,49 @@ public function testProcessStack(array $middlewares, $expectedCallCount) $this->assertSame($expectedCallCount, $middleware->getCallCount()); } } + + public function testMultipleRunsInvokeAllMiddlewareInCorrectOrder() + { + $requests = array( + new ServerRequest('GET', 'https://example.com/1'), + new ServerRequest('GET', 'https://example.com/2'), + new ServerRequest('GET', 'https://example.com/3') + ); + + $receivedRequests = array(); + + $middlewareRunner = new MiddlewareRunner(array( + function (ServerRequestInterface $request, $next) use (&$receivedRequests) { + $receivedRequests[] = 'middleware1: ' . $request->getUri(); + return $next($request); + }, + function (ServerRequestInterface $request, $next) use (&$receivedRequests) { + $receivedRequests[] = 'middleware2: ' . $request->getUri(); + return $next($request); + }, + function (ServerRequestInterface $request, $next) use (&$receivedRequests) { + $receivedRequests[] = 'middleware3: ' . $request->getUri(); + return $next($request); + } + )); + + foreach ($requests as $request) { + $middlewareRunner($request); + } + + $this->assertEquals( + array( + 'middleware1: https://example.com/1', + 'middleware2: https://example.com/1', + 'middleware3: https://example.com/1', + 'middleware1: https://example.com/2', + 'middleware2: https://example.com/2', + 'middleware3: https://example.com/2', + 'middleware1: https://example.com/3', + 'middleware2: https://example.com/3', + 'middleware3: https://example.com/3' + ), + $receivedRequests + ); + } }