1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace GuzzleHttp\Test\Handler;
- use GuzzleHttp\Exception\ConnectException;
- use GuzzleHttp\Handler\CurlHandler;
- use GuzzleHttp\Psr7;
- use GuzzleHttp\Psr7\Request;
- use GuzzleHttp\Psr7\Response;
- use GuzzleHttp\Tests\Server;
- use PHPUnit\Framework\TestCase;
- /**
- * @covers \GuzzleHttp\Handler\CurlHandler
- */
- class CurlHandlerTest extends TestCase
- {
- protected function getHandler($options = [])
- {
- return new CurlHandler($options);
- }
- /**
- * @expectedException \GuzzleHttp\Exception\ConnectException
- * @expectedExceptionMessage cURL
- */
- public function testCreatesCurlErrors()
- {
- $handler = new CurlHandler();
- $request = new Request('GET', 'http://localhost:123');
- $handler($request, ['timeout' => 0.001, 'connect_timeout' => 0.001])->wait();
- }
- public function testReusesHandles()
- {
- Server::flush();
- $response = new response(200);
- Server::enqueue([$response, $response]);
- $a = new CurlHandler();
- $request = new Request('GET', Server::$url);
- $this->assertInstanceOf('GuzzleHttp\Promise\FulfilledPromise', $a($request, []));
- $this->assertInstanceOf('GuzzleHttp\Promise\FulfilledPromise', $a($request, []));
- }
- public function testDoesSleep()
- {
- $response = new response(200);
- Server::enqueue([$response]);
- $a = new CurlHandler();
- $request = new Request('GET', Server::$url);
- $s = microtime(true);
- $a($request, ['delay' => 0.1])->wait();
- $this->assertGreaterThan(0.0001, microtime(true) - $s);
- }
- public function testCreatesCurlErrorsWithContext()
- {
- $handler = new CurlHandler();
- $request = new Request('GET', 'http://localhost:123');
- $called = false;
- $p = $handler($request, ['timeout' => 0.001, 'connect_timeout' => 0.001])
- ->otherwise(function (ConnectException $e) use (&$called) {
- $called = true;
- $this->assertArrayHasKey('errno', $e->getHandlerContext());
- });
- $p->wait();
- $this->assertTrue($called);
- }
- public function testUsesContentLengthWhenOverInMemorySize()
- {
- Server::flush();
- Server::enqueue([new Response()]);
- $stream = Psr7\stream_for(str_repeat('.', 1000000));
- $handler = new CurlHandler();
- $request = new Request(
- 'PUT',
- Server::$url,
- ['Content-Length' => 1000000],
- $stream
- );
- $handler($request, [])->wait();
- $received = Server::received()[0];
- $this->assertEquals(1000000, $received->getHeaderLine('Content-Length'));
- $this->assertFalse($received->hasHeader('Transfer-Encoding'));
- }
- }
|