Chris@0: getMockBuilder('\Symfony\Component\HttpFoundation\Request') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $this->view = $this->getMock('\Drupal\views\Entity\View', ['initHandlers'], [ Chris@0: ['id' => 'test_view'], Chris@0: 'view', Chris@0: ]); Chris@0: Chris@0: $view_executable = $this->getMock('\Drupal\views\ViewExecutable', ['initHandlers', 'getTitle'], [], '', FALSE); Chris@0: $view_executable->expects($this->any()) Chris@0: ->method('getTitle') Chris@0: ->willReturn('View title'); Chris@0: Chris@0: $view_executable->storage = $this->view; Chris@0: $view_executable->argument = []; Chris@0: Chris@0: $display_manager = $this->getMockBuilder('\Drupal\views\Plugin\ViewsPluginManager') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $container->set('plugin.manager.views.display', $display_manager); Chris@0: Chris@0: $access_manager = $this->getMockBuilder('\Drupal\views\Plugin\ViewsPluginManager') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $container->set('plugin.manager.views.access', $access_manager); Chris@0: Chris@0: $route_provider = $this->getMockBuilder('\Drupal\Core\Routing\RouteProviderInterface') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $container->set('router.route_provider', $route_provider); Chris@0: Chris@0: $container->setParameter('authentication_providers', ['basic_auth' => 'basic_auth']); Chris@0: Chris@0: $state = $this->getMock('\Drupal\Core\State\StateInterface'); Chris@0: $container->set('state', $state); Chris@0: Chris@0: $style_manager = $this->getMockBuilder('\Drupal\views\Plugin\ViewsPluginManager') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: $container->set('plugin.manager.views.style', $style_manager); Chris@0: $container->set('renderer', $this->getMock('Drupal\Core\Render\RendererInterface')); Chris@0: Chris@0: $authentication_collector = $this->getMock('\Drupal\Core\Authentication\AuthenticationCollectorInterface'); Chris@0: $container->set('authentication_collector', $authentication_collector); Chris@0: $authentication_collector->expects($this->any()) Chris@0: ->method('getSortedProviders') Chris@0: ->will($this->returnValue(['basic_auth' => 'data', 'cookie' => 'data'])); Chris@0: Chris@14: $container->setParameter('serializer.format_providers', ['json']); Chris@14: Chris@0: \Drupal::setContainer($container); Chris@0: Chris@0: $this->restExport = RestExport::create($container, [], "test_routes", []); Chris@0: $this->restExport->view = $view_executable; Chris@0: Chris@0: // Initialize a display. Chris@0: $this->restExport->display = ['id' => 'page_1']; Chris@0: Chris@0: // Set the style option. Chris@0: $this->restExport->setOption('style', ['type' => 'serializer']); Chris@0: Chris@0: // Set the auth option. Chris@0: $this->restExport->setOption('auth', ['basic_auth']); Chris@0: Chris@0: $display_manager->expects($this->once()) Chris@0: ->method('getDefinition') Chris@0: ->will($this->returnValue(['id' => 'test', 'provider' => 'test'])); Chris@0: Chris@0: $none = $this->getMockBuilder('\Drupal\views\Plugin\views\access\None') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $access_manager->expects($this->once()) Chris@0: ->method('createInstance') Chris@0: ->will($this->returnValue($none)); Chris@0: Chris@0: $style_plugin = $this->getMock('\Drupal\rest\Plugin\views\style\Serializer', ['getFormats', 'init'], [], '', FALSE); Chris@0: Chris@0: $style_plugin->expects($this->once()) Chris@0: ->method('getFormats') Chris@0: ->will($this->returnValue(['json'])); Chris@0: Chris@0: $style_plugin->expects($this->once()) Chris@0: ->method('init') Chris@0: ->with($view_executable) Chris@0: ->will($this->returnValue(TRUE)); Chris@0: Chris@0: $style_manager->expects($this->once()) Chris@0: ->method('createInstance') Chris@0: ->will($this->returnValue($style_plugin)); Chris@0: Chris@0: $this->routes = new RouteCollection(); Chris@0: $this->routes->add('test_1', new Route('/test/1')); Chris@0: $this->routes->add('view.test_view.page_1', new Route('/test/2')); Chris@0: Chris@0: $this->view->addDisplay('page', NULL, 'page_1'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests if adding a requirement to a route only modify one route. Chris@0: */ Chris@0: public function testRoutesRequirements() { Chris@0: $this->restExport->collectRoutes($this->routes); Chris@0: Chris@0: $requirements_1 = $this->routes->get('test_1')->getRequirements(); Chris@0: $requirements_2 = $this->routes->get('view.test_view.page_1')->getRequirements(); Chris@0: Chris@0: $this->assertEquals(0, count($requirements_1), 'First route has no requirement.'); Chris@0: $this->assertEquals(1, count($requirements_2), 'Views route with rest export had the format requirement added.'); Chris@0: Chris@0: // Check auth options. Chris@0: $auth = $this->routes->get('view.test_view.page_1')->getOption('_auth'); Chris@0: $this->assertEquals(count($auth), 1, 'View route with rest export has an auth option added'); Chris@0: $this->assertEquals($auth[0], 'basic_auth', 'View route with rest export has the correct auth option added'); Chris@0: } Chris@0: Chris@0: }