kb / libs /jsonrpc /tests /ClientTest.php
Xv Zan
ULFS
e4f4821
<?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);
}
}