Vendoring deprecated composer libs
This commit is contained in:
220
libs/jsonrpc/tests/HttpClientTest.php
Normal file
220
libs/jsonrpc/tests/HttpClientTest.php
Normal file
@@ -0,0 +1,220 @@
|
||||
<?php
|
||||
|
||||
namespace JsonRPC;
|
||||
|
||||
require_once __DIR__.'/../../../vendor/autoload.php';
|
||||
|
||||
defined('CURLOPT_URL') or define('CURLOPT_URL', 10002);
|
||||
defined('CURLOPT_RETURNTRANSFER') or define('CURLOPT_RETURNTRANSFER', 19913);
|
||||
defined('CURLOPT_CONNECTTIMEOUT') or define('CURLOPT_CONNECTTIMEOUT', 78);
|
||||
defined('CURLOPT_MAXREDIRS') or define('CURLOPT_MAXREDIRS', 68);
|
||||
defined('CURLOPT_SSL_VERIFYPEER') or define('CURLOPT_SSL_VERIFYPEER', 64);
|
||||
defined('CURLOPT_POST') or define('CURLOPT_POST', 47);
|
||||
defined('CURLOPT_POSTFIELDS') or define('CURLOPT_POSTFIELDS', 10015);
|
||||
defined('CURLOPT_HTTPHEADER') or define('CURLOPT_HTTPHEADER', 10023);
|
||||
defined('CURLOPT_HEADERFUNCTION') or define('CURLOPT_HEADERFUNCTION', 20079);
|
||||
defined('CURLOPT_CAINFO') or define('CURLOPT_CAINFO', 10065);
|
||||
|
||||
function extension_loaded($extension) {
|
||||
return HttpClientTest::$functions->extension_loaded($extension);
|
||||
}
|
||||
|
||||
function fopen($url, $mode, $use_include_path, $context)
|
||||
{
|
||||
return HttpClientTest::$functions->fopen($url, $mode, $use_include_path, $context);
|
||||
}
|
||||
|
||||
function stream_context_create(array $params)
|
||||
{
|
||||
return HttpClientTest::$functions->stream_context_create($params);
|
||||
}
|
||||
|
||||
function curl_init() {
|
||||
return HttpClientTest::$functions->curl_init();
|
||||
}
|
||||
|
||||
function curl_setopt_array($ch, array $params) {
|
||||
HttpClientTest::$functions->curl_setopt_array($ch, $params);
|
||||
}
|
||||
|
||||
function curl_setopt($ch, $option, $value) {
|
||||
HttpClientTest::$functions->curl_setopt($ch, $option, $value);
|
||||
}
|
||||
|
||||
function curl_exec($ch) {
|
||||
return HttpClientTest::$functions->curl_exec($ch);
|
||||
}
|
||||
|
||||
function curl_close($ch) {
|
||||
HttpClientTest::$functions->curl_close($ch);
|
||||
}
|
||||
|
||||
class HttpClientTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public static $functions;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
self::$functions = $this
|
||||
->getMockBuilder('stdClass')
|
||||
->setMethods(array('extension_loaded', 'fopen', 'stream_context_create',
|
||||
'curl_init', 'curl_setopt_array', 'curl_setopt', 'curl_exec', 'curl_close'))
|
||||
->getMock();
|
||||
}
|
||||
|
||||
public function testWithServerError()
|
||||
{
|
||||
$this->setExpectedException('\JsonRPC\Exception\ServerErrorException');
|
||||
|
||||
$httpClient = new HttpClient();
|
||||
$httpClient->handleExceptions(array(
|
||||
'HTTP/1.0 301 Moved Permanently',
|
||||
'Connection: close',
|
||||
'HTTP/1.1 500 Internal Server Error',
|
||||
));
|
||||
}
|
||||
|
||||
public function testWithConnectionFailure()
|
||||
{
|
||||
$this->setExpectedException('\JsonRPC\Exception\ConnectionFailureException');
|
||||
|
||||
$httpClient = new HttpClient();
|
||||
$httpClient->handleExceptions(array(
|
||||
'HTTP/1.1 404 Not Found',
|
||||
));
|
||||
}
|
||||
|
||||
public function testWithAccessForbidden()
|
||||
{
|
||||
$this->setExpectedException('\JsonRPC\Exception\AccessDeniedException');
|
||||
|
||||
$httpClient = new HttpClient();
|
||||
$httpClient->handleExceptions(array(
|
||||
'HTTP/1.1 403 Forbidden',
|
||||
));
|
||||
}
|
||||
|
||||
public function testWithAccessNotAllowed()
|
||||
{
|
||||
$this->setExpectedException('\JsonRPC\Exception\AccessDeniedException');
|
||||
|
||||
$httpClient = new HttpClient();
|
||||
$httpClient->handleExceptions(array(
|
||||
'HTTP/1.0 401 Unauthorized',
|
||||
));
|
||||
}
|
||||
|
||||
public function testWithCallback()
|
||||
{
|
||||
self::$functions
|
||||
->expects($this->at(0))
|
||||
->method('extension_loaded')
|
||||
->with('curl')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(1))
|
||||
->method('stream_context_create')
|
||||
->with(array(
|
||||
'http' => array(
|
||||
'method' => 'POST',
|
||||
'protocol_version' => 1.1,
|
||||
'timeout' => 5,
|
||||
'max_redirects' => 2,
|
||||
'header' => implode("\r\n", array(
|
||||
'User-Agent: JSON-RPC PHP Client <https://github.com/fguillot/JsonRPC>',
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json',
|
||||
'Connection: close',
|
||||
'Content-Length: 4',
|
||||
)),
|
||||
'content' => 'test',
|
||||
'ignore_errors' => true,
|
||||
),
|
||||
'ssl' => array(
|
||||
'verify_peer' => true,
|
||||
'verify_peer_name' => true,
|
||||
)
|
||||
))
|
||||
->will($this->returnValue('context'));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(2))
|
||||
->method('fopen')
|
||||
->with('url', 'r', false, 'context')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$httpClient = new HttpClient('url');
|
||||
$httpClient->withBeforeRequestCallback(function(HttpClient $client, $payload) {
|
||||
$client->withHeaders(array('Content-Length: '.strlen($payload)));
|
||||
});
|
||||
|
||||
$this->setExpectedException('\JsonRPC\Exception\ConnectionFailureException');
|
||||
$httpClient->execute('test');
|
||||
}
|
||||
|
||||
public function testWithCurl()
|
||||
{
|
||||
self::$functions
|
||||
->expects($this->at(0))
|
||||
->method('extension_loaded')
|
||||
->with('curl')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(1))
|
||||
->method('curl_init')
|
||||
->will($this->returnValue('curl'));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(2))
|
||||
->method('curl_setopt_array')
|
||||
->with('curl', array(
|
||||
CURLOPT_URL => 'url',
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_CONNECTTIMEOUT => 5,
|
||||
CURLOPT_MAXREDIRS => 2,
|
||||
CURLOPT_SSL_VERIFYPEER => true,
|
||||
CURLOPT_POST => true,
|
||||
CURLOPT_POSTFIELDS => 'test',
|
||||
CURLOPT_HTTPHEADER => array(
|
||||
'User-Agent: JSON-RPC PHP Client <https://github.com/fguillot/JsonRPC>',
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json',
|
||||
'Connection: close',
|
||||
'Content-Length: 4',
|
||||
),
|
||||
CURLOPT_HEADERFUNCTION => function ($curl, $header) use (&$headers) {
|
||||
$headers[] = $header;
|
||||
return strlen($header);
|
||||
}
|
||||
));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(3))
|
||||
->method('curl_setopt')
|
||||
->with('curl', CURLOPT_CAINFO, 'test.crt');
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(4))
|
||||
->method('curl_exec')
|
||||
->with('curl')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
self::$functions
|
||||
->expects($this->at(5))
|
||||
->method('curl_close')
|
||||
->with('curl');
|
||||
|
||||
$httpClient = new HttpClient('url');
|
||||
$httpClient
|
||||
->withSslLocalCert('test.crt')
|
||||
->withBeforeRequestCallback(function(HttpClient $client, $payload) {
|
||||
$client->withHeaders(array('Content-Length: '.strlen($payload)));
|
||||
});
|
||||
|
||||
|
||||
$this->setExpectedException('\JsonRPC\Exception\ConnectionFailureException');
|
||||
$httpClient->execute('test');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user