Security update for Core, with self-updated composer
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Entity / Enhancer / EntityRouteEnhancerTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\Entity\Enhancer;
4
5 use Drupal\Core\Entity\Enhancer\EntityRouteEnhancer;
6 use Drupal\Tests\UnitTestCase;
7 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
8 use Symfony\Component\HttpFoundation\Request;
9
10 /**
11  * @coversDefaultClass \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
12  * @group Entity
13  */
14 class EntityRouteEnhancerTest extends UnitTestCase {
15
16   /**
17    * Tests the enhancer method.
18    *
19    * @see \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer::enhancer()
20    */
21   public function testEnhancer() {
22     $route_enhancer = new EntityRouteEnhancer();
23
24     // Set a controller to ensure it is not overridden.
25     $request = new Request();
26     $defaults = [];
27     $defaults['_controller'] = 'Drupal\Tests\Core\Controller\TestController::content';
28     $defaults['_entity_form'] = 'entity_test.default';
29     $new_defaults = $route_enhancer->enhance($defaults, $request);
30     $this->assertTrue(is_callable($new_defaults['_controller']));
31     $this->assertEquals($defaults['_controller'], $new_defaults['_controller'], '_controller did not get overridden.');
32
33     // Set _entity_form and ensure that the form is set.
34     $defaults = [];
35     $defaults['_entity_form'] = 'entity_test.default';
36     $new_defaults = $route_enhancer->enhance($defaults, $request);
37     $this->assertEquals('controller.entity_form:getContentResult', $new_defaults['_controller']);
38
39     // Set _entity_list and ensure that the entity list controller is set.
40     $defaults = [];
41     $defaults['_entity_list'] = 'entity_test.default';
42     $new_defaults = $route_enhancer->enhance($defaults, $request);
43     $this->assertEquals('\Drupal\Core\Entity\Controller\EntityListController::listing', $new_defaults['_controller'], 'The entity list controller was not set.');
44     $this->assertEquals('entity_test.default', $new_defaults['entity_type']);
45     $this->assertFalse(isset($new_defaults['_entity_list']));
46
47     // Set _entity_view and ensure that the entity view controller is set.
48     $defaults = [];
49     $defaults['_entity_view'] = 'entity_test.full';
50     $defaults['entity_test'] = 'Mock entity';
51     $defaults = $route_enhancer->enhance($defaults, $request);
52     $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_controller'], 'The entity view controller was not set.');
53     $this->assertEquals($defaults['_entity'], 'Mock entity');
54     $this->assertEquals($defaults['view_mode'], 'full');
55     $this->assertFalse(isset($defaults['_entity_view']));
56
57     // Set _entity_view and ensure that the entity view controller is set using
58     // a converter.
59     $defaults = [];
60     $defaults['_entity_view'] = 'entity_test.full';
61     $defaults['foo'] = 'Mock entity';
62     // Add a converter.
63     $options['parameters']['foo'] = ['type' => 'entity:entity_test'];
64     // Set the route.
65     $route = $this->getMockBuilder('Symfony\Component\Routing\Route')
66       ->disableOriginalConstructor()
67       ->getMock();
68
69     $route->expects($this->any())
70       ->method('getOptions')
71       ->will($this->returnValue($options));
72
73     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
74     $defaults = $route_enhancer->enhance($defaults, $request);
75     $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_controller'], 'The entity view controller was not set.');
76     $this->assertEquals($defaults['_entity'], 'Mock entity');
77     $this->assertEquals($defaults['view_mode'], 'full');
78     $this->assertFalse(isset($defaults['_entity_view']));
79
80     // Set _entity_view without a view mode.
81     $defaults = [];
82     $defaults['_entity_view'] = 'entity_test';
83     $defaults['entity_test'] = 'Mock entity';
84     $defaults = $route_enhancer->enhance($defaults, $request);
85     $this->assertEquals('\Drupal\Core\Entity\Controller\EntityViewController::view', $defaults['_controller'], 'The entity view controller was not set.');
86     $this->assertEquals($defaults['_entity'], 'Mock entity');
87     $this->assertTrue(empty($defaults['view_mode']));
88     $this->assertFalse(isset($defaults['_entity_view']));
89   }
90
91 }