| | <?php |
| |
|
| | use JsonRPC\Exception\AccessDeniedException; |
| | use JsonRPC\Exception\AuthenticationFailureException; |
| | use JsonRPC\Exception\InvalidJsonFormatException; |
| | use JsonRPC\Exception\InvalidJsonRpcFormatException; |
| | use JsonRPC\Exception\ResponseEncodingFailureException; |
| | use JsonRPC\Exception\ResponseException; |
| | use JsonRPC\Response\ResponseBuilder; |
| |
|
| | require_once __DIR__.'/../../../../vendor/autoload.php'; |
| |
|
| | class ResponseBuilderTest extends PHPUnit_Framework_TestCase |
| | { |
| | public function testBuildResponse() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","result":"test","id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithError() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withError(42, 'Test', 'More info') |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":42,"message":"Test","data":"More info"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new Exception('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":0,"message":"Test"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithResponseException() |
| | { |
| | $exception = new ResponseException('Error', 42); |
| | $exception->setData('Data'); |
| |
|
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException($exception) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":42,"message":"Error","data":"Data"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithAccessDeniedException() |
| | { |
| | $responseBuilder = ResponseBuilder::create(); |
| | $response = $responseBuilder |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new AccessDeniedException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":403,"message":"Forbidden"},"id":123}', $response); |
| | $this->assertEquals('HTTP/1.0 403 Forbidden', $responseBuilder->getStatus()); |
| |
|
| | $this->assertEquals( |
| | array('Content-Type' => 'application/json'), |
| | $responseBuilder->getHeaders() |
| | ); |
| | } |
| |
|
| | public function testBuildResponseWithAuthenticationFailureException() |
| | { |
| | $responseBuilder = ResponseBuilder::create(); |
| | $response = $responseBuilder |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new AuthenticationFailureException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":401,"message":"Unauthorized"},"id":123}', $response); |
| | $this->assertEquals('HTTP/1.0 401 Unauthorized', $responseBuilder->getStatus()); |
| |
|
| | $this->assertEquals( |
| | array('Content-Type' => 'application/json', 'WWW-Authenticate' => 'Basic realm="JsonRPC"'), |
| | $responseBuilder->getHeaders() |
| | ); |
| | } |
| |
|
| | public function testBuildResponseWithResponseEncodingFailureException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new ResponseEncodingFailureException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32603,"message":"Internal error","data":"Test"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithInvalidArgumentException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new InvalidArgumentException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params","data":"Test"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithBadFunctionCallException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new BadFunctionCallException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found"},"id":123}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithInvalidJsonRpcFormatException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new InvalidJsonRpcFormatException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid Request"},"id":null}', $response); |
| | } |
| |
|
| | public function testBuildResponseWithInvalidJsonFormatException() |
| | { |
| | $response = ResponseBuilder::create() |
| | ->withId(123) |
| | ->withResult('test') |
| | ->withException(new InvalidJsonFormatException('Test')) |
| | ->build(); |
| |
|
| | $this->assertEquals('{"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error"},"id":null}', $response); |
| | } |
| | } |
| |
|