| <?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); |
| } |
| } |
|
|