/**
  * Returns a valid test controller from a request object
  * @param ezpRestRequest $r
  * @return ezpRestMvcController
  */
 protected function getTestControllerFromRequest(ezpRestRequest $r)
 {
     $this->mvcConfig->runPreRoutingFilters($r);
     $router = $this->mvcConfig->createRouter($r);
     $routingInfos = $router->getRoutingInformation();
     $controllerClass = $routingInfos->controllerClass;
     $controller = new $controllerClass($routingInfos->action, $r);
     $controller->setRouter($router);
     return $controller;
 }
 /**
  * Tests service links for content fields
  * @group restContentServices
  * @dataProvider requestObjectProvider
  * @param ezpRestRequest $request
  * @param int $nodeId
  */
 public function testFieldsLinksByContent(ezpRestRequest $request, $nodeId)
 {
     $mvcConfig = new ezpMvcConfiguration();
     $mvcConfig->runPreRoutingFilters($request);
     $baseUri = $request->getBaseURI();
     $contentQueryString = $request->getContentQueryString(true);
     $content = ezpContent::fromNodeId($nodeId);
     $links = ezpRestContentModel::getFieldsLinksByContent($content, $request);
     self::assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_ARRAY, $links);
     self::assertArrayHasKey('*', $links, 'Links for fields services must contain a wildcard (*) pointing to a service listing all fields content');
     // * stands for all fields
     self::assertEquals($baseUri . '/fields' . $contentQueryString, $links['*']);
     // We must have one entry per field
     foreach ($content->fields as $fieldName => $field) {
         self::assertArrayHasKey($fieldName, $links, "Service link missing for {$fieldName}");
         self::assertEquals($baseUri . '/field/' . $fieldName . $contentQueryString, $links[$fieldName], "Wrong service link for {$fieldName}");
     }
 }