mirror of
https://github.com/guzzle/guzzle.git
synced 2025-02-25 02:22:57 +01:00
86 lines
2.6 KiB
PHP
86 lines
2.6 KiB
PHP
<?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;
|
|
|
|
/**
|
|
* @covers \GuzzleHttp\Handler\CurlHandler
|
|
*/
|
|
class CurlHandlerTest extends \PHPUnit_Framework_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);
|
|
$a($request, []);
|
|
$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'));
|
|
}
|
|
}
|