public function testBatchRequest() { $server = $this->assembleServer(); $server->router()->bindController('foo', ServerTest_FooController::class)->group(ServerTest_Middleware_DenyByContext::class, function (Server\Router $router) { $router->bind('bar', ServerTest_BarController::class); }); $server->onException(AccessDeniedHttpException::class, function (\Exception $e, Server\Request $request) { return Server\RequestResponse::constructErrorResponse($request->getId(), $e->getMessage(), 403); }); $server->setPayload(json_encode([['jsonrpc' => '2.0', 'method' => 'foo', 'id' => 1], ['jsonrpc' => '2.0', 'method' => 'foo.foo', 'id' => 2], ['jsonrpc' => '2.0', 'method' => 'bar', 'id' => 3]])); $context = new stdClass(); $context->deny = true; $response = $server->run($context); $expectedResponseData = [(object) ['jsonrpc' => '2.0', 'result' => (object) ['foo_index' => true], 'id' => 1], (object) ['jsonrpc' => '2.0', 'result' => (object) ['foo_foo' => true], 'id' => 2], (object) ['jsonrpc' => '2.0', 'error' => (object) ['message' => 'Access Denied By Context', 'code' => 403], 'id' => 3]]; $this->assertEquals($expectedResponseData, json_decode($response->getContent())); }