/** @test */ public function requestShouldEmitErrorIfConnectionEmitsError() { $requestData = new RequestData('GET', 'http://www.example.com'); $request = new Request($this->loop, $this->connector, $requestData); $this->successfulConnectionMock(); $handler = $this->createCallableMock(); $handler->expects($this->once())->method('__invoke')->with($this->isInstanceOf('Exception'), $this->isInstanceOf('React\\HttpClient\\Request')); $request->on('error', $handler); $handler = $this->createCallableMock(); $handler->expects($this->once())->method('__invoke')->with($this->isInstanceOf('Exception'), null, $this->isInstanceOf('React\\HttpClient\\Request')); $request->on('end', $handler); $request->on('close', $this->expectCallableNever()); $request->end(); $request->handleError(new \Exception('test')); }
/** * @test * @expectedException Exception * @expectedExceptionMessage something failed */ public function requestDoesNotHideErrors() { $requestData = new RequestData('GET', 'http://www.example.com'); $request = new Request($this->connector, $requestData); $this->rejectedConnectionMock(); $request->on('error', function () { throw new \Exception('something failed'); }); $request->end(); }
/** @test */ public function requestShouldEmitErrorIfConnectionEmitsError() { $guzzleRequest = new GuzzleRequest('GET', 'http://www.example.com'); $request = new Request($this->loop, $this->connectionManager, $guzzleRequest); $stream = $this->stream; $this->connectionManager->expects($this->once())->method('getConnection')->with($this->anything(), 'www.example.com', 80)->will($this->returnCallback(function ($cb) use($stream) { $cb($stream); })); $handler = $this->createCallableMock(); $handler->expects($this->once())->method('__invoke')->with($this->isInstanceOf('Exception'), $this->isInstanceOf('React\\HttpClient\\Request')); $request->on('error', $handler); $handler = $this->createCallableMock(); $handler->expects($this->once())->method('__invoke')->with($this->isInstanceOf('Exception'), null, $this->isInstanceOf('React\\HttpClient\\Request')); $request->on('end', $handler); $request->on('close', $this->expectCallableNever()); $request->end(); $request->handleError(new \Exception('test')); }
/** @test */ public function requestShouldRemoveAllListenerAfterClosed() { $requestData = new RequestData('GET', 'http://www.example.com'); $request = new Request($this->connector, $requestData); $request->on('end', function () { }); $this->assertCount(1, $request->listeners('end')); $request->close(); $this->assertCount(0, $request->listeners('end')); }
/** * @param HttpRequest $request */ protected function setupListeners(HttpRequest $request) { $request->on('headers-written', function () { $this->onHeadersWritten(); }); $request->on('drain', function () { $this->progress->onSent(); }); $request->on('response', function (HttpResponse $response) use($request) { $this->onResponse($response, $request); }); $request->on('error', function ($error) { $this->onError($error); }); $request->on('end', function () { $this->onEnd(); }); }