public function testHandleInvokesUntilFirstHandlerThatDoesNotCallNext()
{
$this->middleware->pipe(function ($req, $res, $next) {
$res->write("First\n");
$next($req, $res);
});
$this->middleware->pipe(function ($req, $res, $next) {
$res->write("Second\n");
$next($req, $res);
});
$this->middleware->pipe(function ($req, $res, $next) {
$res->write("Third\n");
});
$this->middleware->pipe(function ($req, $res, $next) {
$this->fail('Should not hit fourth handler!');
});
$request = new Request([], [], 'http://local.example.com/foo', 'GET', 'php://memory');
$this->middleware->__invoke($request, $this->response, $this->createFinalHandler());
$body = (string) $this->response->getBody();
$this->assertContains('First', $body);
$this->assertContains('Second', $body);
$this->assertContains('Third', $body);
}