104 lines
3.0 KiB
PHP
104 lines
3.0 KiB
PHP
<?php
|
|
|
|
use JsonRPC\Client;
|
|
|
|
require_once __DIR__.'/../../../vendor/autoload.php';
|
|
|
|
class ClientTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
private $httpClient;
|
|
|
|
public function setUp()
|
|
{
|
|
$this->httpClient = $this
|
|
->getMockBuilder('\JsonRPC\HttpClient')
|
|
->setMethods(array('execute'))
|
|
->getMock();
|
|
}
|
|
|
|
public function testSendBatch()
|
|
{
|
|
$client = new Client('', false, $this->httpClient);
|
|
$response = array(
|
|
array(
|
|
'jsonrpc' => '2.0',
|
|
'result' => 'c',
|
|
'id' => 1,
|
|
),
|
|
array(
|
|
'jsonrpc' => '2.0',
|
|
'result' => 'd',
|
|
'id' => 2,
|
|
)
|
|
);
|
|
|
|
$this->httpClient
|
|
->expects($this->once())
|
|
->method('execute')
|
|
->with($this->stringContains('[{"jsonrpc":"2.0","method":"methodA","id":'))
|
|
->will($this->returnValue($response));
|
|
|
|
|
|
$result = $client->batch()
|
|
->execute('methodA', array('a' => 'b'))
|
|
->execute('methodB', array('a' => 'b'))
|
|
->send();
|
|
|
|
$this->assertEquals(array('c', 'd'), $result);
|
|
}
|
|
|
|
public function testSendRequest()
|
|
{
|
|
$client = new Client('', false, $this->httpClient);
|
|
|
|
$this->httpClient
|
|
->expects($this->once())
|
|
->method('execute')
|
|
->with($this->stringContains('{"jsonrpc":"2.0","method":"methodA","id":'))
|
|
->will($this->returnValue(array('jsonrpc' => '2.0', 'result' => 'foobar', 'id' => 1)));
|
|
|
|
$result = $client->execute('methodA', array('a' => 'b'));
|
|
$this->assertEquals($result, 'foobar');
|
|
}
|
|
|
|
public function testSendRequestWithError()
|
|
{
|
|
$client = new Client('', false, $this->httpClient);
|
|
|
|
$this->httpClient
|
|
->expects($this->once())
|
|
->method('execute')
|
|
->with($this->stringContains('{"jsonrpc":"2.0","method":"methodA","id":'))
|
|
->will($this->returnValue(array(
|
|
'jsonrpc' => '2.0',
|
|
'error' => array(
|
|
'code' => -32601,
|
|
'message' => 'Method not found',
|
|
),
|
|
)));
|
|
|
|
$this->expectException('BadFunctionCallException');
|
|
$client->execute('methodA', array('a' => 'b'));
|
|
}
|
|
|
|
public function testSendRequestWithErrorAndReturnExceptionEnabled()
|
|
{
|
|
$client = new Client('', true, $this->httpClient);
|
|
|
|
$this->httpClient
|
|
->expects($this->once())
|
|
->method('execute')
|
|
->with($this->stringContains('{"jsonrpc":"2.0","method":"methodA","id":'))
|
|
->will($this->returnValue(array(
|
|
'jsonrpc' => '2.0',
|
|
'error' => array(
|
|
'code' => -32601,
|
|
'message' => 'Method not found',
|
|
),
|
|
)));
|
|
|
|
$result = $client->execute('methodA', array('a' => 'b'));
|
|
$this->assertInstanceOf('BadFunctionCallException', $result);
|
|
}
|
|
}
|