Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\jsonapi\Functional;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\Core\Url;
|
Chris@18
|
6 use Drupal\search\Entity\SearchPage;
|
Chris@18
|
7
|
Chris@18
|
8 /**
|
Chris@18
|
9 * JSON:API integration test for the "SearchPage" config entity type.
|
Chris@18
|
10 *
|
Chris@18
|
11 * @group jsonapi
|
Chris@18
|
12 */
|
Chris@18
|
13 class SearchPageTest extends ResourceTestBase {
|
Chris@18
|
14
|
Chris@18
|
15 /**
|
Chris@18
|
16 * {@inheritdoc}
|
Chris@18
|
17 */
|
Chris@18
|
18 public static $modules = ['node', 'search'];
|
Chris@18
|
19
|
Chris@18
|
20 /**
|
Chris@18
|
21 * {@inheritdoc}
|
Chris@18
|
22 */
|
Chris@18
|
23 protected static $entityTypeId = 'search_page';
|
Chris@18
|
24
|
Chris@18
|
25 /**
|
Chris@18
|
26 * {@inheritdoc}
|
Chris@18
|
27 */
|
Chris@18
|
28 protected static $resourceTypeName = 'search_page--search_page';
|
Chris@18
|
29
|
Chris@18
|
30 /**
|
Chris@18
|
31 * {@inheritdoc}
|
Chris@18
|
32 *
|
Chris@18
|
33 * @var \Drupal\search\SearchPageInterface
|
Chris@18
|
34 */
|
Chris@18
|
35 protected $entity;
|
Chris@18
|
36
|
Chris@18
|
37 /**
|
Chris@18
|
38 * {@inheritdoc}
|
Chris@18
|
39 */
|
Chris@18
|
40 protected function setUpAuthorization($method) {
|
Chris@18
|
41 switch ($method) {
|
Chris@18
|
42 case 'GET':
|
Chris@18
|
43 $this->grantPermissionsToTestedRole(['access content']);
|
Chris@18
|
44 break;
|
Chris@18
|
45
|
Chris@18
|
46 case 'POST':
|
Chris@18
|
47 case 'PATCH':
|
Chris@18
|
48 case 'DELETE':
|
Chris@18
|
49 $this->grantPermissionsToTestedRole(['administer search']);
|
Chris@18
|
50 break;
|
Chris@18
|
51 }
|
Chris@18
|
52 }
|
Chris@18
|
53
|
Chris@18
|
54 /**
|
Chris@18
|
55 * {@inheritdoc}
|
Chris@18
|
56 */
|
Chris@18
|
57 protected function createEntity() {
|
Chris@18
|
58 $search_page = SearchPage::create([
|
Chris@18
|
59 'id' => 'hinode_search',
|
Chris@18
|
60 'plugin' => 'node_search',
|
Chris@18
|
61 'label' => 'Search of magnetic activity of the Sun',
|
Chris@18
|
62 'path' => 'sun',
|
Chris@18
|
63 ]);
|
Chris@18
|
64 $search_page->save();
|
Chris@18
|
65 return $search_page;
|
Chris@18
|
66 }
|
Chris@18
|
67
|
Chris@18
|
68 /**
|
Chris@18
|
69 * {@inheritdoc}
|
Chris@18
|
70 */
|
Chris@18
|
71 protected function getExpectedDocument() {
|
Chris@18
|
72 $self_url = Url::fromUri('base:/jsonapi/search_page/search_page/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl();
|
Chris@18
|
73 return [
|
Chris@18
|
74 'jsonapi' => [
|
Chris@18
|
75 'meta' => [
|
Chris@18
|
76 'links' => [
|
Chris@18
|
77 'self' => ['href' => 'http://jsonapi.org/format/1.0/'],
|
Chris@18
|
78 ],
|
Chris@18
|
79 ],
|
Chris@18
|
80 'version' => '1.0',
|
Chris@18
|
81 ],
|
Chris@18
|
82 'links' => [
|
Chris@18
|
83 'self' => ['href' => $self_url],
|
Chris@18
|
84 ],
|
Chris@18
|
85 'data' => [
|
Chris@18
|
86 'id' => $this->entity->uuid(),
|
Chris@18
|
87 'type' => 'search_page--search_page',
|
Chris@18
|
88 'links' => [
|
Chris@18
|
89 'self' => ['href' => $self_url],
|
Chris@18
|
90 ],
|
Chris@18
|
91 'attributes' => [
|
Chris@18
|
92 'configuration' => [
|
Chris@18
|
93 'rankings' => [],
|
Chris@18
|
94 ],
|
Chris@18
|
95 'dependencies' => [
|
Chris@18
|
96 'module' => [
|
Chris@18
|
97 'node',
|
Chris@18
|
98 ],
|
Chris@18
|
99 ],
|
Chris@18
|
100 'label' => 'Search of magnetic activity of the Sun',
|
Chris@18
|
101 'langcode' => 'en',
|
Chris@18
|
102 'path' => 'sun',
|
Chris@18
|
103 'plugin' => 'node_search',
|
Chris@18
|
104 'status' => TRUE,
|
Chris@18
|
105 'weight' => 0,
|
Chris@18
|
106 'drupal_internal__id' => 'hinode_search',
|
Chris@18
|
107 ],
|
Chris@18
|
108 ],
|
Chris@18
|
109 ];
|
Chris@18
|
110 }
|
Chris@18
|
111
|
Chris@18
|
112 /**
|
Chris@18
|
113 * {@inheritdoc}
|
Chris@18
|
114 */
|
Chris@18
|
115 protected function getPostDocument() {
|
Chris@18
|
116 // @todo Update in https://www.drupal.org/node/2300677.
|
Chris@18
|
117 }
|
Chris@18
|
118
|
Chris@18
|
119 /**
|
Chris@18
|
120 * {@inheritdoc}
|
Chris@18
|
121 */
|
Chris@18
|
122 protected function getExpectedUnauthorizedAccessMessage($method) {
|
Chris@18
|
123 switch ($method) {
|
Chris@18
|
124 case 'GET':
|
Chris@18
|
125 return "The 'access content' permission is required.";
|
Chris@18
|
126
|
Chris@18
|
127 default:
|
Chris@18
|
128 return parent::getExpectedUnauthorizedAccessMessage($method);
|
Chris@18
|
129 }
|
Chris@18
|
130 }
|
Chris@18
|
131
|
Chris@18
|
132 /**
|
Chris@18
|
133 * {@inheritdoc}
|
Chris@18
|
134 */
|
Chris@18
|
135 protected function getExpectedUnauthorizedAccessCacheability() {
|
Chris@18
|
136 // @see \Drupal\search\SearchPageAccessControlHandler::checkAccess()
|
Chris@18
|
137 return parent::getExpectedUnauthorizedAccessCacheability()
|
Chris@18
|
138 ->addCacheTags(['config:search.page.hinode_search']);
|
Chris@18
|
139 }
|
Chris@18
|
140
|
Chris@18
|
141 }
|