public function testBuild()
 {
     $container = $this->getMockBuilder(ContainerBuilder::class)->setMethods(['addCompilerPass'])->getMock();
     $container->expects($this->exactly(5))->method('addCompilerPass')->with($this->isInstanceOf(CompilerPassInterface::class));
     $bundle = new FOSRestBundle();
     $bundle->build($container);
 }
示例#2
0
 public function testBuild()
 {
     $container = $this->getMock('\\Symfony\\Component\\DependencyInjection\\ContainerBuilder');
     $container->expects($this->once())->method('addCompilerPass')->with($this->isInstanceOf('\\Symfony\\Component\\DependencyInjection\\Compiler\\CompilerPassInterface'));
     $bundle = new FOSRestBundle();
     $bundle->build($container);
 }
示例#3
0
 /**
  * Loads the services based on your application configuration.
  *
  * @param array $configs
  * @param ContainerBuilder $container
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $config = $this->processConfiguration(new Configuration(), $configs);
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('view.xml');
     $loader->load('routing.xml');
     $loader->load('util.xml');
     if (version_compare(FOSRestBundle::getSymfonyVersion(Kernel::VERSION), '2.1.0', '<')) {
         $container->setParameter('fos_rest.routing.loader.controller.class', $container->getParameter('fos_rest.routing.loader_2_0.controller.class'));
     }
     $formats = array();
     foreach ($config['view']['formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = false;
         }
     }
     foreach ($config['view']['templating_formats'] as $format => $enabled) {
         if ($enabled) {
             $formats[$format] = true;
         }
     }
     foreach ($config['service'] as $key => $service) {
         $container->setAlias($this->getAlias() . '.' . $key, $config['service'][$key]);
     }
     if (!empty($config['serializer']['version'])) {
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.type', 'version');
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.value', $config['serializer']['version']);
     } elseif (!empty($config['serializer']['groups'])) {
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.type', 'groups');
         $container->setParameter($this->getAlias() . '.serializer.exclusion_strategy.value', $config['serializer']['groups']);
     }
     $container->setParameter($this->getAlias() . '.formats', $formats);
     $container->setParameter($this->getAlias() . '.default_engine', $config['view']['default_engine']);
     foreach ($config['view']['force_redirects'] as $format => $code) {
         if (true === $code) {
             $config['view']['force_redirects'][$format] = Codes::HTTP_FOUND;
         }
     }
     $container->setParameter($this->getAlias() . '.force_redirects', $config['view']['force_redirects']);
     if (!is_numeric($config['view']['failed_validation'])) {
         $config['view']['failed_validation'] = constant('\\FOS\\Rest\\Util\\Codes::' . $config['view']['failed_validation']);
     }
     $container->setParameter($this->getAlias() . '.failed_validation', $config['view']['failed_validation']);
     if (!empty($config['view']['view_response_listener'])) {
         $loader->load('view_response_listener.xml');
         $container->setParameter($this->getAlias() . '.view_response_listener.force_view', 'force' === $config['view']['view_response_listener']);
     }
     $container->setParameter($this->getAlias() . '.routing.loader.default_format', $config['routing_loader']['default_format']);
     foreach ($config['exception']['codes'] as $exception => $code) {
         if (!is_numeric($code)) {
             $config['exception']['codes'][$exception] = constant("\\FOS\\Rest\\Util\\Codes::{$code}");
         }
         $this->testExceptionExists($exception);
     }
     foreach ($config['exception']['messages'] as $exception => $message) {
         $this->testExceptionExists($exception);
     }
     $container->setParameter($this->getAlias() . '.exception.codes', $config['exception']['codes']);
     $container->setParameter($this->getAlias() . '.exception.messages', $config['exception']['messages']);
     if (!empty($config['body_listener'])) {
         $loader->load('body_listener.xml');
         $container->setParameter($this->getAlias() . '.decoders', $config['body_listener']['decoders']);
     }
     if (!empty($config['format_listener'])) {
         $loader->load('format_listener.xml');
         $container->setParameter($this->getAlias() . '.default_priorities', $config['format_listener']['default_priorities']);
         $container->setParameter($this->getAlias() . '.prefer_extension', $config['format_listener']['prefer_extension']);
         $container->setParameter($this->getAlias() . '.fallback_format', $config['format_listener']['fallback_format']);
     } else {
         $container->setParameter($this->getAlias() . '.default_priorities', array());
         $container->setParameter($this->getAlias() . '.prefer_extension', true);
         $container->setParameter($this->getAlias() . '.fallback_format', 'html');
     }
     if (!empty($config['view']['mime_types'])) {
         $loader->load('mime_type_listener.xml');
         $container->setParameter($this->getAlias() . '.mime_types', $config['view']['mime_types']);
     } else {
         $container->setParameter($this->getAlias() . '.mime_types', array());
     }
 }