6d26891fdbcb0ce0f4d6e751fc046e7802da613b
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / RouteProcessor / RouteNoneTest.php
1 <?php
2
3 namespace Drupal\KernelTests\Core\RouteProcessor;
4
5 use Drupal\Core\Cache\Cache;
6 use Drupal\Core\GeneratedUrl;
7 use Drupal\Core\Render\BubbleableMetadata;
8 use Drupal\KernelTests\KernelTestBase;
9 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
10 use Symfony\Component\HttpFoundation\Request;
11 use Symfony\Component\Routing\Route;
12
13 /**
14  * Tests the <none> route processor.
15  *
16  * @see system.routing.yml
17  * @see \Drupal\Core\Routing\UrlGenerator
18  * @group route_processor
19  */
20 class RouteNoneTest extends KernelTestBase {
21
22   /**
23    * {@inheritdoc}
24    */
25   public static $modules = ['system'];
26
27   /**
28    * The URL generator.
29    *
30    * @var \Drupal\Core\Routing\UrlGeneratorInterface
31    */
32   protected $urlGenerator;
33
34   /**
35    * {@inheritdoc}
36    */
37   protected function setUp() {
38     parent::setUp();
39
40     $this->urlGenerator = \Drupal::urlGenerator();
41   }
42
43   /**
44    * Tests the output process.
45    */
46   public function testProcessOutbound() {
47     $expected_cacheability = (new BubbleableMetadata())->setCacheMaxAge(Cache::PERMANENT);
48
49     $request_stack = \Drupal::requestStack();
50     /** @var \Symfony\Component\Routing\RequestContext $request_context */
51     $request_context = \Drupal::service('router.request_context');
52
53     // Test request with subdir on homepage.
54     $server = [
55       'SCRIPT_NAME' => '/subdir/index.php',
56       'SCRIPT_FILENAME' => $this->root . '/index.php',
57       'SERVER_NAME' => 'http://www.example.com',
58     ];
59     $request = Request::create('/subdir', 'GET', [], [], [], $server);
60     $request->attributes->set(RouteObjectInterface::ROUTE_NAME, '<front>');
61     $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, new Route('/'));
62
63     $request_stack->push($request);
64     $request_context->fromRequest($request);
65     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('');
66     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], [], TRUE, TRUE));
67     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('#test-fragment');
68     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], ['fragment' => 'test-fragment'], TRUE));
69
70     // Test request with subdir on other page.
71     $server = [
72       'SCRIPT_NAME' => '/subdir/index.php',
73       'SCRIPT_FILENAME' => $this->root . '/index.php',
74       'SERVER_NAME' => 'http://www.example.com',
75     ];
76     $request = Request::create('/subdir/node/add', 'GET', [], [], [], $server);
77     $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'node.add');
78     $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, new Route('/node/add'));
79
80     $request_stack->push($request);
81     $request_context->fromRequest($request);
82     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('');
83     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], [], TRUE, TRUE));
84     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('#test-fragment');
85     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], ['fragment' => 'test-fragment'], TRUE));
86
87     // Test request without subdir on the homepage.
88     $server = [
89       'SCRIPT_NAME' => '/index.php',
90       'SCRIPT_FILENAME' => $this->root . '/index.php',
91       'SERVER_NAME' => 'http://www.example.com',
92     ];
93     $request = Request::create('/', 'GET', [], [], [], $server);
94     $request->attributes->set(RouteObjectInterface::ROUTE_NAME, '<front>');
95     $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, new Route('/'));
96
97     $request_stack->push($request);
98     $request_context->fromRequest($request);
99     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('');
100     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], [], TRUE, TRUE));
101     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('#test-fragment');
102     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], ['fragment' => 'test-fragment'], TRUE));
103
104     // Test request without subdir on other page.
105     $server = [
106       'SCRIPT_NAME' => '/index.php',
107       'SCRIPT_FILENAME' => $this->root . '/index.php',
108       'SERVER_NAME' => 'http://www.example.com',
109     ];
110     $request = Request::create('/node/add', 'GET', [], [], [], $server);
111     $request->attributes->set(RouteObjectInterface::ROUTE_NAME, 'node.add');
112     $request->attributes->set(RouteObjectInterface::ROUTE_OBJECT, new Route('/node/add'));
113
114     $request_stack->push($request);
115     $request_context->fromRequest($request);
116     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('');
117     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], [], TRUE, TRUE));
118     $url = GeneratedUrl::createFromObject($expected_cacheability)->setGeneratedUrl('#test-fragment');
119     $this->assertEqual($url, $this->urlGenerator->generateFromRoute('<none>', [], ['fragment' => 'test-fragment'], TRUE));
120   }
121
122 }