101 lines
3.0 KiB
PHP
101 lines
3.0 KiB
PHP
<?php
|
|
|
|
use JsonRPC\Response\ResponseParser;
|
|
|
|
require_once __DIR__.'/../../../../vendor/autoload.php';
|
|
|
|
class ResponseParserTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
public function testSingleRequest()
|
|
{
|
|
$result = ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "result": "foobar", "id": "1"}', true))
|
|
->parse();
|
|
|
|
$this->assertEquals('foobar', $result);
|
|
}
|
|
|
|
public function testWithBadJsonFormat()
|
|
{
|
|
$this->expectException('\JsonRPC\Exception\InvalidJsonFormatException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload('foobar')
|
|
->parse();
|
|
}
|
|
|
|
public function testWithBadProcedure()
|
|
{
|
|
$this->expectException('BadFunctionCallException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "1"}', true))
|
|
->parse();
|
|
}
|
|
|
|
public function testWithInvalidArgs()
|
|
{
|
|
$this->expectException('InvalidArgumentException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32602, "message": "Invalid params"}, "id": "1"}', true))
|
|
->parse();
|
|
}
|
|
|
|
public function testWithInvalidRequest()
|
|
{
|
|
$this->expectException('\JsonRPC\Exception\InvalidJsonRpcFormatException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": null}', true))
|
|
->parse();
|
|
}
|
|
|
|
public function testWithParseError()
|
|
{
|
|
$this->expectException('\JsonRPC\Exception\InvalidJsonFormatException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": -32700, "message": "Parse error"}, "id": null}', true))
|
|
->parse();
|
|
}
|
|
|
|
public function testWithOtherError()
|
|
{
|
|
$this->expectException('\JsonRPC\Exception\ResponseException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode('{"jsonrpc": "2.0", "error": {"code": 42, "message": "Something", "data": "foobar"}, "id": null}', true))
|
|
->parse();
|
|
}
|
|
|
|
public function testBatch()
|
|
{
|
|
$payload = '[
|
|
{"jsonrpc": "2.0", "result": 7, "id": "1"},
|
|
{"jsonrpc": "2.0", "result": 19, "id": "2"}
|
|
]';
|
|
|
|
$result = ResponseParser::create()
|
|
->withPayload(json_decode($payload, true))
|
|
->parse();
|
|
|
|
$this->assertEquals(array(7, 19), $result);
|
|
}
|
|
|
|
public function testBatchWithError()
|
|
{
|
|
$payload = '[
|
|
{"jsonrpc": "2.0", "result": 7, "id": "1"},
|
|
{"jsonrpc": "2.0", "result": 19, "id": "2"},
|
|
{"jsonrpc": "2.0", "error": {"code": -32602, "message": "Invalid params"}, "id": "1"}
|
|
]';
|
|
|
|
$this->expectException('InvalidArgumentException');
|
|
|
|
ResponseParser::create()
|
|
->withPayload(json_decode($payload, true))
|
|
->parse();
|
|
}
|
|
}
|