HttpKernelTest.php

Contains \Drupal\Tests\Core\HttpKernelTest.

Namespace

Drupal\Tests\Core

File

drupal/core/tests/Drupal/Tests/Core/HttpKernelTest.php
View source
<?php

/**
 * @file
 * Contains \Drupal\Tests\Core\HttpKernelTest.
 */
namespace Drupal\Tests\Core;

use Drupal\Core\Controller\ControllerResolver;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\HttpKernel;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
use Symfony\Component\DependencyInjection\Scope;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\KernelEvents;

/**
 * Tests the custom http kernel of drupal.
 *
 * @see \Drupal\Core\HttpKernel
 */
class HttpKernelTest extends UnitTestCase {
  public static function getInfo() {
    return array(
      'name' => 'HttpKernel (Unit)',
      'description' => 'Tests the HttpKernel.',
      'group' => 'Routing',
    );
  }

  /**
   * Tests the forward method.
   *
   * @see \Drupal\Core\HttpKernel::setupSubrequest()
   */
  public function testSetupSubrequest() {
    $container = new ContainerBuilder();
    $request = new Request();
    $container
      ->addScope(new Scope('request'));
    $container
      ->enterScope('request');
    $container
      ->set('request', $request, 'request');
    $dispatcher = new EventDispatcher();
    $controller_resolver = new ControllerResolver($container);
    $http_kernel = new HttpKernel($dispatcher, $container, $controller_resolver);
    $test_controller = '\\Drupal\\Tests\\Core\\Controller\\TestController';
    $random_attribute = $this
      ->randomName();
    $subrequest = $http_kernel
      ->setupSubrequest($test_controller, array(
      'custom_attribute' => $random_attribute,
    ), array(
      'custom_query' => $random_attribute,
    ));
    $this
      ->assertNotSame($subrequest, $request, 'The subrequest is not the same as the main request.');
    $this
      ->assertEquals($subrequest->attributes
      ->get('custom_attribute'), $random_attribute, 'Attributes are set from the subrequest.');
    $this
      ->assertEquals($subrequest->query
      ->get('custom_query'), $random_attribute, 'Query attributes are set from the subrequest.');
    $this
      ->assertEquals($subrequest->attributes
      ->get('_controller'), $test_controller, 'Controller attribute got set.');
    $subrequest = $http_kernel
      ->setupSubrequest(NULL, array(), array());
    $this
      ->assertFalse($subrequest->attributes
      ->has('_controller'), 'Ensure that _controller is not copied when no controller was set before.');
  }

}

Classes

Namesort descending Description
HttpKernelTest Tests the custom http kernel of drupal.