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");
});
$phpunit = $this;
$this->middleware->pipe(function ($req, $res, $next) use($phpunit) {
$phpunit->fail('Should not hit fourth handler!');
});
$request = new Request([], [], 'http://local.example.com/foo', 'GET', 'php://memory');
$this->middleware->__invoke($request, $this->response);
$body = (string) $this->response->getBody();
$this->assertContains('First', $body);
$this->assertContains('Second', $body);
$this->assertContains('Third', $body);
}