Exemplo n.º 1
0
 /**
  * @param object $requestData
  * @return Request
  */
 public function createRequest($requestData)
 {
     if (!is_object($requestData)) {
         throw new BadRequestException();
     }
     if (!isset($requestData->jsonrpc) || $requestData->jsonrpc !== "2.0") {
         throw new BadRequestException();
     }
     if (empty($requestData->method) || !is_string($requestData->method)) {
         throw new BadRequestException();
     }
     $params = null;
     if (!empty($requestData->params)) {
         if (is_array($requestData->params)) {
             $params = RequestParams::constructPositional($requestData->params);
         } elseif (is_object($requestData->params)) {
             $params = RequestParams::constructNamed((array) $requestData->params);
         } else {
             throw new BadRequestException();
         }
     }
     return new Request($requestData->method, $params, isset($requestData->id) ? $requestData->id : null);
 }
 public function testDependencyInjectionWithNamedParameters()
 {
     $route = $this->getMockBuilder(RouteInterface::class)->getMock();
     $route->method('getControllerClass')->willReturn(RouteDispatcherTest_StubController::class);
     $route->method('getActionName')->willReturn('dependenciesWithArgs');
     /** @var RouteInterface $route */
     $container = $this->getMockBuilder(Container::class)->getMock();
     $container->method('make')->will($this->returnCallback(function ($className) {
         return new $className();
     }));
     /** @var Container $container */
     $routeDispatcher = new RouteDispatcher($container);
     $result = $routeDispatcher->dispatch($route, RequestParams::constructNamed(['required' => 1, 'optional' => 42]));
     $this->assertEquals(['required' => 1, 'optional' => 42], $result, 'Failed with provided optional value');
     $result = $routeDispatcher->dispatch($route, RequestParams::constructNamed(['required' => 2]));
     $this->assertEquals(['required' => 2, 'optional' => 'default'], $result, 'Failed with missing optional value');
     $this->setExpectedException(InvalidParamsException::class, '"required" is required', -32602);
     $routeDispatcher->dispatch($route, null);
 }