StackKernelIntegrationTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace Drupal\KernelTests\Core\HttpKernel;
  3. use Drupal\Core\Url;
  4. use Drupal\KernelTests\KernelTestBase;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpKernel\HttpKernelInterface;
  7. /**
  8. * Tests the stacked kernel functionality.
  9. *
  10. * @group Routing
  11. */
  12. class StackKernelIntegrationTest extends KernelTestBase {
  13. /**
  14. * Modules to enable.
  15. *
  16. * @var array
  17. */
  18. public static $modules = ['httpkernel_test', 'system'];
  19. /**
  20. * {@inheritdoc}
  21. */
  22. protected function setUp() {
  23. parent::setUp();
  24. \Drupal::service('router.builder')->rebuild();
  25. }
  26. /**
  27. * Tests a request.
  28. */
  29. public function testRequest() {
  30. $request = Request::create((new Url('httpkernel_test.empty'))->toString());
  31. /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
  32. $http_kernel = \Drupal::service('http_kernel');
  33. $http_kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, FALSE);
  34. $this->assertEqual($request->attributes->get('_hello'), 'world');
  35. $this->assertEqual($request->attributes->get('_previous_optional_argument'), 'test_argument');
  36. }
  37. /**
  38. * Tests that late middlewares are automatically flagged lazy.
  39. */
  40. public function testLazyLateMiddlewares() {
  41. $this->assertFalse($this->container->getDefinition('http_middleware.reverse_proxy')->isLazy(), 'lazy flag on http_middleware.reverse_proxy definition is not set');
  42. $this->assertFalse($this->container->getDefinition('http_middleware.kernel_pre_handle')->isLazy(), 'lazy flag on http_middleware.kernel_pre_handle definition is not set');
  43. $this->assertFalse($this->container->getDefinition('http_middleware.session')->isLazy(), 'lazy flag on http_middleware.session definition is not set');
  44. $this->assertFalse($this->container->getDefinition('http_kernel.basic')->isLazy(), 'lazy flag on http_kernel.basic definition is not set');
  45. \Drupal::service('module_installer')->install(['page_cache']);
  46. $this->container = \Drupal::service('kernel')->rebuildContainer();
  47. $this->assertFalse($this->container->getDefinition('http_middleware.reverse_proxy')->isLazy(), 'lazy flag on http_middleware.reverse_proxy definition is not set');
  48. $this->assertFalse($this->container->getDefinition('http_middleware.page_cache')->isLazy(), 'lazy flag on http_middleware.page_cache definition is not set');
  49. $this->assertTrue($this->container->getDefinition('http_middleware.kernel_pre_handle')->isLazy(), 'lazy flag on http_middleware.kernel_pre_handle definition is automatically set if page_cache is enabled.');
  50. $this->assertTrue($this->container->getDefinition('http_middleware.session')->isLazy(), 'lazy flag on http_middleware.session definition is automatically set if page_cache is enabled.');
  51. $this->assertTrue($this->container->getDefinition('http_kernel.basic')->isLazy(), 'lazy flag on http_kernel.basic definition is automatically set if page_cache is enabled.');
  52. }
  53. }