Upgraded drupal core with security updates
[yaffs-website] / web / core / modules / hal / tests / src / Kernel / HalLinkManagerTest.php
1 <?php
2
3 namespace Drupal\Tests\hal\Kernel;
4
5 use Drupal\Core\Url;
6 use Drupal\field\Entity\FieldConfig;
7 use Drupal\field\Entity\FieldStorageConfig;
8 use Drupal\KernelTests\KernelTestBase;
9 use Drupal\node\Entity\NodeType;
10
11 /**
12  * @coversDefaultClass \Drupal\hal\LinkManager\LinkManager
13  * @group hal
14  */
15 class HalLinkManagerTest extends KernelTestBase {
16
17   /**
18    * {@inheritdoc}
19    */
20   public static $modules = [ 'hal', 'hal_test', 'serialization', 'system', 'node', 'user', 'field'];
21
22   /**
23    * {@inheritdoc}
24    */
25   protected function setUp() {
26     parent::setUp();
27
28     $this->installEntitySchema('node');
29
30     NodeType::create([
31       'type' => 'page',
32     ])->save();
33     FieldStorageConfig::create([
34       'entity_type' => 'node',
35       'type' => 'entity_reference',
36       'field_name' => 'field_ref',
37     ])->save();
38     FieldConfig::create([
39       'entity_type' => 'node',
40       'bundle' => 'page',
41       'field_name' => 'field_ref',
42     ])->save();
43
44     \Drupal::service('router.builder')->rebuild();
45   }
46
47   /**
48    * @covers ::getTypeUri
49    */
50   public function testGetTypeUri() {
51     /* @var \Drupal\rest\LinkManager\TypeLinkManagerInterface $type_manager */
52     $type_manager = \Drupal::service('hal.link_manager.type');
53     $base = Url::fromRoute('<front>', [], ['absolute' => TRUE])->toString();
54     $link = $type_manager->getTypeUri('node', 'page');
55     $this->assertSame($link, $base . 'rest/type/node/page');
56     // Now with optional context.
57     $link = $type_manager->getTypeUri('node', 'page', ['hal_test' => TRUE]);
58     $this->assertSame($link, 'hal_test_type');
59     // Test BC: hook_rest_type_uri_alter().
60     $link = $type_manager->getTypeUri('node', 'page', ['rest_test' => TRUE]);
61     $this->assertSame($link, 'rest_test_type');
62   }
63
64   /**
65    * @covers ::getRelationUri
66    */
67   public function testGetRelationUri() {
68     /* @var \Drupal\rest\LinkManager\RelationLinkManagerInterface $relation_manager */
69     $relation_manager = \Drupal::service('hal.link_manager.relation');
70     $base = Url::fromRoute('<front>', [], ['absolute' => TRUE])->toString();
71     $link = $relation_manager->getRelationUri('node', 'page', 'field_ref');
72     $this->assertSame($link, $base . 'rest/relation/node/page/field_ref');
73     // Now with optional context.
74     $link = $relation_manager->getRelationUri('node', 'page', 'foobar', ['hal_test' => TRUE]);
75     $this->assertSame($link, 'hal_test_relation');
76     // Test BC: hook_rest_relation_uri_alter().
77     $link = $relation_manager->getRelationUri('node', 'page', 'foobar', ['rest_test' => TRUE]);
78     $this->assertSame($link, 'rest_test_relation');
79   }
80
81   /**
82    * @covers ::getRelationInternalIds
83    */
84   public function testGetRelationInternalIds() {
85     /* @var \Drupal\rest\LinkManager\RelationLinkManagerInterface $relation_manager */
86     $relation_manager = \Drupal::service('hal.link_manager.relation');
87     $link = $relation_manager->getRelationUri('node', 'page', 'field_ref');
88     $internal_ids = $relation_manager->getRelationInternalIds($link);
89
90     $this->assertEquals([
91       'entity_type_id' => 'node',
92       'entity_type' => \Drupal::entityTypeManager()->getDefinition('node'),
93       'bundle' => 'page',
94       'field_name' => 'field_ref'
95     ], $internal_ids);
96   }
97
98   /**
99    * @covers ::setLinkDomain
100    */
101   public function testHalLinkManagersSetLinkDomain() {
102     /* @var \Drupal\rest\LinkManager\LinkManager $link_manager */
103     $link_manager = \Drupal::service('hal.link_manager');
104     $link_manager->setLinkDomain('http://example.com/');
105     $link = $link_manager->getTypeUri('node', 'page');
106     $this->assertEqual($link, 'http://example.com/rest/type/node/page');
107     $link = $link_manager->getRelationUri('node', 'page', 'field_ref');
108     $this->assertEqual($link, 'http://example.com/rest/relation/node/page/field_ref');
109   }
110
111 }