annotate core/modules/media/tests/src/Kernel/MediaAccessControlHandlerTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents
children
rev   line source
Chris@5 1 <?php
Chris@5 2
Chris@5 3 namespace Drupal\Tests\media\Kernel;
Chris@5 4
Chris@5 5 use Drupal\Core\Access\AccessResult;
Chris@5 6 use Drupal\Core\Access\AccessResultInterface;
Chris@5 7 use Drupal\media\Entity\Media;
Chris@5 8 use Drupal\Tests\user\Traits\UserCreationTrait;
Chris@5 9
Chris@5 10 /**
Chris@5 11 * Tests the media access control handler.
Chris@5 12 *
Chris@5 13 * @group media
Chris@5 14 *
Chris@5 15 * @coversDefaultClass \Drupal\media\MediaAccessControlHandler
Chris@5 16 */
Chris@5 17 class MediaAccessControlHandlerTest extends MediaKernelTestBase {
Chris@5 18
Chris@5 19 use UserCreationTrait;
Chris@5 20
Chris@5 21 /**
Chris@5 22 * Tests the media access control handler.
Chris@5 23 *
Chris@5 24 * @param string[] $permissions
Chris@5 25 * The permissions that the user should be given.
Chris@5 26 * @param array $entity_values
Chris@5 27 * Initial values from which to create the media entity.
Chris@5 28 * @param string $operation
Chris@5 29 * The operation, one of 'view', 'update' or 'delete'.
Chris@5 30 * @param \Drupal\Core\Access\AccessResultInterface $expected_result
Chris@5 31 * Expected result.
Chris@5 32 * @param string[] $expected_cache_contexts
Chris@5 33 * Expected cache contexts.
Chris@5 34 * @param string[] $expected_cache_tags
Chris@5 35 * Expected cache tags.
Chris@5 36 *
Chris@5 37 * @covers ::checkAccess
Chris@5 38 * @dataProvider providerAccess
Chris@5 39 */
Chris@5 40 public function testAccess(array $permissions, array $entity_values, $operation, AccessResultInterface $expected_result, array $expected_cache_contexts, array $expected_cache_tags) {
Chris@5 41 // Set a fixed ID so the type specific permissions match.
Chris@5 42 $media_type = $this->createMediaType('test', [
Chris@5 43 'id' => 'test',
Chris@5 44 ]);
Chris@5 45
Chris@5 46 $user = $this->createUser($permissions);
Chris@5 47
Chris@5 48 $entity_values += [
Chris@5 49 'status' => FALSE,
Chris@5 50 'uid' => $user->id(),
Chris@5 51 'bundle' => $media_type->id(),
Chris@5 52 ];
Chris@5 53
Chris@5 54 $entity = Media::create($entity_values);
Chris@5 55 $entity->save();
Chris@5 56 /** @var \Drupal\Core\Entity\EntityAccessControlHandlerInterface $access_handler */
Chris@5 57 $access_handler = $this->container->get('entity_type.manager')->getAccessControlHandler('media');
Chris@5 58 $this->assertAccess($expected_result, $expected_cache_contexts, $expected_cache_tags, $access_handler->access($entity, $operation, $user, TRUE));
Chris@5 59 }
Chris@5 60
Chris@5 61 /**
Chris@5 62 * @param string[] $permissions
Chris@5 63 * User permissions.
Chris@5 64 * @param \Drupal\Core\Access\AccessResultInterface $expected_result
Chris@5 65 * Expected result.
Chris@5 66 * @param string[] $expected_cache_contexts
Chris@5 67 * Expected cache contexts.
Chris@5 68 * @param string[] $expected_cache_tags
Chris@5 69 * Expected cache tags.
Chris@5 70 *
Chris@5 71 * @covers ::checkCreateAccess
Chris@5 72 * @dataProvider providerCreateAccess
Chris@5 73 */
Chris@5 74 public function testCreateAccess(array $permissions, AccessResultInterface $expected_result, array $expected_cache_contexts, array $expected_cache_tags) {
Chris@5 75 $user = $this->createUser($permissions);
Chris@5 76
Chris@5 77 /** @var \Drupal\Core\Entity\EntityAccessControlHandlerInterface $access_handler */
Chris@5 78 $access_handler = $this->container->get('entity_type.manager')->getAccessControlHandler('media');
Chris@5 79 $this->assertAccess($expected_result, $expected_cache_contexts, $expected_cache_tags, $access_handler->createAccess('test', $user, [], TRUE));
Chris@5 80 }
Chris@5 81
Chris@5 82 /**
Chris@5 83 * Asserts an access result.
Chris@5 84 *
Chris@5 85 * @param \Drupal\Core\Access\AccessResultInterface $expected_access_result
Chris@5 86 * The expected access result.
Chris@5 87 * @param string[] $expected_cache_contexts
Chris@5 88 * Expected contexts.
Chris@5 89 * @param string[] $expected_cache_tags
Chris@5 90 * Expected cache tags
Chris@5 91 * @param \Drupal\Core\Access\AccessResultInterface $actual
Chris@5 92 * The actual access result.
Chris@5 93 */
Chris@5 94 protected function assertAccess(AccessResultInterface $expected_access_result, array $expected_cache_contexts, array $expected_cache_tags, AccessResultInterface $actual) {
Chris@5 95 $this->assertSame($expected_access_result->isAllowed(), $actual->isAllowed());
Chris@5 96 $this->assertSame($expected_access_result->isForbidden(), $actual->isForbidden());
Chris@5 97 $this->assertSame($expected_access_result->isNeutral(), $actual->isNeutral());
Chris@5 98
Chris@5 99 $actual_cache_contexts = $actual->getCacheContexts();
Chris@5 100 sort($expected_cache_contexts);
Chris@5 101 sort($actual_cache_contexts);
Chris@5 102 $this->assertSame($expected_cache_contexts, $actual_cache_contexts);
Chris@5 103
Chris@5 104 $actual_cache_tags = $actual->getCacheTags();
Chris@5 105 sort($expected_cache_tags);
Chris@5 106 sort($actual_cache_tags);
Chris@5 107 $this->assertSame($expected_cache_tags, $actual_cache_tags);
Chris@5 108 }
Chris@5 109
Chris@5 110 /**
Chris@5 111 * Data provider for testAccess().
Chris@5 112 *
Chris@5 113 * @return array
Chris@5 114 * The data sets to test.
Chris@5 115 */
Chris@5 116 public function providerAccess() {
Chris@5 117 $test_data = [];
Chris@5 118
Chris@5 119 // Check published / unpublished media access for a user owning the media
Chris@5 120 // item without permissions.
Chris@5 121 $test_data['owner, no permissions / published / view'] = [
Chris@5 122 [],
Chris@5 123 ['status' => TRUE],
Chris@5 124 'view',
Chris@5 125 AccessResult::neutral(),
Chris@5 126 ['user.permissions'],
Chris@5 127 ['media:1'],
Chris@5 128 ];
Chris@5 129 $test_data['owner, no permissions / published / update'] = [
Chris@5 130 [],
Chris@5 131 ['status' => TRUE],
Chris@5 132 'update',
Chris@5 133 AccessResult::neutral(),
Chris@5 134 ['user.permissions'],
Chris@5 135 [],
Chris@5 136 ];
Chris@5 137 $test_data['owner, no permissions / published / delete'] = [
Chris@5 138 [],
Chris@5 139 ['status' => TRUE],
Chris@5 140 'delete',
Chris@5 141 AccessResult::neutral(),
Chris@5 142 ['user.permissions'],
Chris@5 143 [],
Chris@5 144 ];
Chris@5 145 $test_data['owner, no permissions / unpublished / view'] = [
Chris@5 146 [],
Chris@5 147 [],
Chris@5 148 'view',
Chris@5 149 AccessResult::neutral(),
Chris@5 150 ['user.permissions'],
Chris@5 151 ['media:1'],
Chris@5 152 ];
Chris@5 153 $test_data['owner, no permissions / unpublished / update'] = [
Chris@5 154 [],
Chris@5 155 [],
Chris@5 156 'update',
Chris@5 157 AccessResult::neutral(),
Chris@5 158 ['user.permissions'],
Chris@5 159 [],
Chris@5 160 ];
Chris@5 161 $test_data['owner, no permissions / unpublished / delete'] = [
Chris@5 162 [],
Chris@5 163 [],
Chris@5 164 'delete',
Chris@5 165 AccessResult::neutral(),
Chris@5 166 ['user.permissions'],
Chris@5 167 [],
Chris@5 168 ];
Chris@5 169
Chris@5 170 // Check published / unpublished media access for a user not owning the
Chris@5 171 // media item without permissions.
Chris@5 172 $test_data['not owner, no permissions / published / view'] = [
Chris@5 173 [],
Chris@5 174 ['uid' => 0, 'status' => TRUE],
Chris@5 175 'view',
Chris@5 176 AccessResult::neutral(),
Chris@5 177 ['user.permissions'],
Chris@5 178 ['media:1'],
Chris@5 179 ];
Chris@5 180 $test_data['not owner, no permissions / published / update'] = [
Chris@5 181 [],
Chris@5 182 ['uid' => 0, 'status' => TRUE],
Chris@5 183 'update',
Chris@5 184 AccessResult::neutral(),
Chris@5 185 ['user.permissions'],
Chris@5 186 [],
Chris@5 187 ];
Chris@5 188 $test_data['not owner, no permissions / published / delete'] = [
Chris@5 189 [],
Chris@5 190 ['uid' => 0, 'status' => TRUE],
Chris@5 191 'delete',
Chris@5 192 AccessResult::neutral(),
Chris@5 193 ['user.permissions'],
Chris@5 194 [],
Chris@5 195 ];
Chris@5 196 $test_data['not owner, no permissions / unpublished / view'] = [
Chris@5 197 [],
Chris@5 198 ['uid' => 0],
Chris@5 199 'view',
Chris@5 200 AccessResult::neutral(),
Chris@5 201 ['user.permissions'],
Chris@5 202 ['media:1'],
Chris@5 203 ];
Chris@5 204 $test_data['not owner, no permissions / unpublished / update'] = [
Chris@5 205 [],
Chris@5 206 ['uid' => 0],
Chris@5 207 'update',
Chris@5 208 AccessResult::neutral(),
Chris@5 209 ['user.permissions'],
Chris@5 210 [],
Chris@5 211 ];
Chris@5 212 $test_data['not owner, no permissions / unpublished / delete'] = [
Chris@5 213 [],
Chris@5 214 ['uid' => 0],
Chris@5 215 'delete',
Chris@5 216 AccessResult::neutral(),
Chris@5 217 ['user.permissions'],
Chris@5 218 [],
Chris@5 219 ];
Chris@5 220
Chris@5 221 // Check published / unpublished media access for a user owning the media
Chris@5 222 // item with only the 'view media' permission.
Chris@5 223 $test_data['owner, can view media / published / view'] = [
Chris@5 224 ['view media'],
Chris@5 225 ['status' => TRUE],
Chris@5 226 'view',
Chris@5 227 AccessResult::allowed(),
Chris@5 228 ['user.permissions'],
Chris@5 229 ['media:1'],
Chris@5 230 ];
Chris@5 231 $test_data['owner, can view media / published / update'] = [
Chris@5 232 ['view media'],
Chris@5 233 ['status' => TRUE],
Chris@5 234 'update',
Chris@5 235 AccessResult::neutral(),
Chris@5 236 ['user.permissions'],
Chris@5 237 [],
Chris@5 238 ];
Chris@5 239 $test_data['owner, can view media / published / delete'] = [
Chris@5 240 ['view media'],
Chris@5 241 ['status' => TRUE],
Chris@5 242 'delete',
Chris@5 243 AccessResult::neutral(),
Chris@5 244 ['user.permissions'],
Chris@5 245 [],
Chris@5 246 ];
Chris@5 247 $test_data['owner, can view media / unpublished / view'] = [
Chris@5 248 ['view media'],
Chris@5 249 [],
Chris@5 250 'view',
Chris@5 251 AccessResult::neutral(),
Chris@5 252 ['user.permissions'],
Chris@5 253 ['media:1'],
Chris@5 254 ];
Chris@5 255 $test_data['owner, can view media / unpublished / update'] = [
Chris@5 256 ['view media'],
Chris@5 257 [],
Chris@5 258 'update',
Chris@5 259 AccessResult::neutral(),
Chris@5 260 ['user.permissions'],
Chris@5 261 [],
Chris@5 262 ];
Chris@5 263 $test_data['owner, can view media / unpublished / delete'] = [
Chris@5 264 ['view media'],
Chris@5 265 [],
Chris@5 266 'delete',
Chris@5 267 AccessResult::neutral(),
Chris@5 268 ['user.permissions'],
Chris@5 269 [],
Chris@5 270 ];
Chris@5 271
Chris@5 272 // Check published / unpublished media access for a user not owning the
Chris@5 273 // media item with only the 'view media' permission.
Chris@5 274 $test_data['not owner, can view media / published / view'] = [
Chris@5 275 ['view media'],
Chris@5 276 ['uid' => 0, 'status' => TRUE],
Chris@5 277 'view',
Chris@5 278 AccessResult::allowed(),
Chris@5 279 ['user.permissions'],
Chris@5 280 ['media:1'],
Chris@5 281 ];
Chris@5 282 $test_data['not owner, can view media / published / update'] = [
Chris@5 283 ['view media'],
Chris@5 284 ['uid' => 0, 'status' => TRUE],
Chris@5 285 'update',
Chris@5 286 AccessResult::neutral(),
Chris@5 287 ['user.permissions'],
Chris@5 288 [],
Chris@5 289 ];
Chris@5 290 $test_data['not owner, can view media / published / delete'] = [
Chris@5 291 ['view media'],
Chris@5 292 ['uid' => 0, 'status' => TRUE],
Chris@5 293 'delete',
Chris@5 294 AccessResult::neutral(),
Chris@5 295 ['user.permissions'],
Chris@5 296 [],
Chris@5 297 ];
Chris@5 298 $test_data['not owner, can view media / unpublished / view'] = [
Chris@5 299 ['view media'],
Chris@5 300 ['uid' => 0],
Chris@5 301 'view',
Chris@5 302 AccessResult::neutral(),
Chris@5 303 ['user.permissions'],
Chris@5 304 ['media:1'],
Chris@5 305 ];
Chris@5 306 $test_data['not owner, can view media / unpublished / update'] = [
Chris@5 307 ['view media'],
Chris@5 308 ['uid' => 0],
Chris@5 309 'update',
Chris@5 310 AccessResult::neutral(),
Chris@5 311 ['user.permissions'],
Chris@5 312 [],
Chris@5 313 ];
Chris@5 314 $test_data['not owner, can view media / unpublished / delete'] = [
Chris@5 315 ['view media'],
Chris@5 316 ['uid' => 0],
Chris@5 317 'delete',
Chris@5 318 AccessResult::neutral(),
Chris@5 319 ['user.permissions'],
Chris@5 320 [],
Chris@5 321 ];
Chris@5 322
Chris@5 323 // Check published / unpublished media access for a user owning the media
Chris@5 324 // item with the 'view media' and 'view own unpublished' permission.
Chris@5 325 $test_data['owner, can view own unpublished media / published / view'] = [
Chris@5 326 ['view media', 'view own unpublished media'],
Chris@5 327 ['status' => TRUE],
Chris@5 328 'view',
Chris@5 329 AccessResult::allowed(),
Chris@5 330 ['user.permissions'],
Chris@5 331 ['media:1'],
Chris@5 332 ];
Chris@5 333 $test_data['owner, can view own unpublished media / published / update'] = [
Chris@5 334 ['view media', 'view own unpublished media'],
Chris@5 335 ['status' => TRUE],
Chris@5 336 'update',
Chris@5 337 AccessResult::neutral(),
Chris@5 338 ['user.permissions'],
Chris@5 339 [],
Chris@5 340 ];
Chris@5 341 $test_data['owner, can view own unpublished media / published / delete'] = [
Chris@5 342 ['view media', 'view own unpublished media'],
Chris@5 343 ['status' => TRUE],
Chris@5 344 'delete',
Chris@5 345 AccessResult::neutral(),
Chris@5 346 ['user.permissions'],
Chris@5 347 [],
Chris@5 348 ];
Chris@5 349 $test_data['owner, can view own unpublished media / unpublished / view'] = [
Chris@5 350 ['view media', 'view own unpublished media'],
Chris@5 351 [],
Chris@5 352 'view',
Chris@5 353 AccessResult::allowed(),
Chris@5 354 ['user.permissions', 'user'],
Chris@5 355 ['media:1'],
Chris@5 356 ];
Chris@5 357 $test_data['owner, can view own unpublished media / unpublished / update'] = [
Chris@5 358 ['view media', 'view own unpublished media'],
Chris@5 359 [],
Chris@5 360 'update',
Chris@5 361 AccessResult::neutral(),
Chris@5 362 ['user.permissions'],
Chris@5 363 [],
Chris@5 364 ];
Chris@5 365 $test_data['owner, can view own unpublished media / unpublished / delete'] = [
Chris@5 366 ['view media', 'view own unpublished media'],
Chris@5 367 [],
Chris@5 368 'delete',
Chris@5 369 AccessResult::neutral(),
Chris@5 370 ['user.permissions'],
Chris@5 371 [],
Chris@5 372 ];
Chris@5 373
Chris@5 374 // Check published / unpublished media access for a user not owning the
Chris@5 375 // media item with the 'view media' and 'view own unpublished' permission.
Chris@5 376 $test_data['not owner, can view own unpublished media / published / view'] = [
Chris@5 377 ['view media', 'view own unpublished media'],
Chris@5 378 ['uid' => 0, 'status' => TRUE],
Chris@5 379 'view',
Chris@5 380 AccessResult::allowed(),
Chris@5 381 ['user.permissions'],
Chris@5 382 ['media:1'],
Chris@5 383 ];
Chris@5 384 $test_data['not owner, can view own unpublished media / published / update'] = [
Chris@5 385 ['view media', 'view own unpublished media'],
Chris@5 386 ['uid' => 0, 'status' => TRUE],
Chris@5 387 'update',
Chris@5 388 AccessResult::neutral(),
Chris@5 389 ['user.permissions'],
Chris@5 390 [],
Chris@5 391 ];
Chris@5 392 $test_data['not owner, can view own unpublished media / published / delete'] = [
Chris@5 393 ['view media', 'view own unpublished media'],
Chris@5 394 ['uid' => 0, 'status' => TRUE],
Chris@5 395 'delete',
Chris@5 396 AccessResult::neutral(),
Chris@5 397 ['user.permissions'],
Chris@5 398 [],
Chris@5 399 ];
Chris@5 400 $test_data['not owner, can view own unpublished media / unpublished / view'] = [
Chris@5 401 ['view media', 'view own unpublished media'],
Chris@5 402 ['uid' => 0],
Chris@5 403 'view',
Chris@5 404 AccessResult::neutral(),
Chris@5 405 ['user.permissions', 'user'],
Chris@5 406 ['media:1'],
Chris@5 407 ];
Chris@5 408 $test_data['not owner, can view own unpublished media / unpublished / update'] = [
Chris@5 409 ['view media', 'view own unpublished media'],
Chris@5 410 ['uid' => 0],
Chris@5 411 'update',
Chris@5 412 AccessResult::neutral(),
Chris@5 413 ['user.permissions'],
Chris@5 414 [],
Chris@5 415 ];
Chris@5 416 $test_data['not owner, can view own unpublished media / unpublished / delete'] = [
Chris@5 417 ['view media', 'view own unpublished media'],
Chris@5 418 ['uid' => 0],
Chris@5 419 'delete',
Chris@5 420 AccessResult::neutral(),
Chris@5 421 ['user.permissions'],
Chris@5 422 [],
Chris@5 423 ];
Chris@5 424
Chris@5 425 return $test_data;
Chris@5 426 }
Chris@5 427
Chris@5 428 /**
Chris@5 429 * Data provider for testCreateAccess().
Chris@5 430 *
Chris@5 431 * @return array
Chris@5 432 * The data sets to test.
Chris@5 433 */
Chris@5 434 public function providerCreateAccess() {
Chris@5 435 $test_data = [];
Chris@5 436
Chris@5 437 // Check create access for a user without permissions.
Chris@5 438 $test_data['user, no permissions / create'] = [
Chris@5 439 [],
Chris@5 440 AccessResult::neutral()->setReason("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 441 ['user.permissions'],
Chris@5 442 [],
Chris@5 443 ];
Chris@5 444
Chris@5 445 // Check create access for a user with the 'view media' permission.
Chris@5 446 $test_data['user, can view media / create'] = [
Chris@5 447 [
Chris@5 448 'view media',
Chris@5 449 ],
Chris@5 450 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 451 ['user.permissions'],
Chris@5 452 [],
Chris@5 453 ];
Chris@5 454
Chris@5 455 // Check create access for a user with the 'view media' and 'view own
Chris@5 456 // unpublished media' permission.
Chris@5 457 $test_data['user, can view own unpublished media / create'] = [
Chris@5 458 [
Chris@5 459 'view media',
Chris@5 460 'view own unpublished media',
Chris@5 461 ],
Chris@5 462 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 463 ['user.permissions'],
Chris@5 464 [],
Chris@5 465 ];
Chris@5 466
Chris@5 467 // Check create access for a user with the 'view media', 'view own
Chris@5 468 // unpublished media', 'update any media' and 'delete any media' permission.
Chris@5 469 $test_data['user, can view own unpublished media and update or delete any media / create'] = [
Chris@5 470 [
Chris@5 471 'view media',
Chris@5 472 'view own unpublished media',
Chris@5 473 'update any media',
Chris@5 474 'delete any media',
Chris@5 475 ],
Chris@5 476 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 477 ['user.permissions'],
Chris@5 478 [],
Chris@5 479 ];
Chris@5 480
Chris@5 481 // Check create access for a user with the 'view media', 'view own
Chris@5 482 // unpublished media', 'update media' and 'delete media' permission.
Chris@5 483 $test_data['user, can view own unpublished media and update or delete own media / create'] = [
Chris@5 484 [
Chris@5 485 'view media',
Chris@5 486 'view own unpublished media',
Chris@5 487 'update media',
Chris@5 488 'delete media',
Chris@5 489 ],
Chris@5 490 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 491 ['user.permissions'],
Chris@5 492 [],
Chris@5 493 ];
Chris@5 494
Chris@5 495 // Check create access for a user with the 'view media', 'view own
Chris@5 496 // unpublished media', 'update any media', 'delete any media', 'update
Chris@5 497 // media' and 'delete media' permission.
Chris@5 498 $test_data['user, can view own unpublished media and update or delete all media / create'] = [
Chris@5 499 [
Chris@5 500 'view media',
Chris@5 501 'view own unpublished media',
Chris@5 502 'update any media',
Chris@5 503 'delete any media',
Chris@5 504 'update media',
Chris@5 505 'delete media',
Chris@5 506 ],
Chris@5 507 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 508 ['user.permissions'],
Chris@5 509 [],
Chris@5 510 ];
Chris@5 511
Chris@5 512 // Check create access for a user with all media permissions except 'create
Chris@5 513 // media' or 'administer media'.
Chris@5 514 $test_data['user, can not create or administer media / create'] = [
Chris@5 515 [
Chris@5 516 'access media overview',
Chris@5 517 'view media',
Chris@5 518 'view own unpublished media',
Chris@5 519 'update any media',
Chris@5 520 'delete any media',
Chris@5 521 'update media',
Chris@5 522 'delete media',
Chris@5 523 ],
Chris@5 524 AccessResult::neutral("The following permissions are required: 'administer media' OR 'create media'."),
Chris@5 525 ['user.permissions'],
Chris@5 526 [],
Chris@5 527 ];
Chris@5 528
Chris@5 529 // Check create access for a user with the 'create media' permission.
Chris@5 530 $test_data['user, can create media / create'] = [
Chris@5 531 [
Chris@5 532 'create media',
Chris@5 533 ],
Chris@5 534 AccessResult::allowed(),
Chris@5 535 ['user.permissions'],
Chris@5 536 [],
Chris@5 537 ];
Chris@5 538
Chris@5 539 // Check create access for a user with the 'administer media' permission.
Chris@5 540 $test_data['user, can administer media / create'] = [
Chris@5 541 [
Chris@5 542 'administer media',
Chris@5 543 ],
Chris@5 544 AccessResult::allowed(),
Chris@5 545 ['user.permissions'],
Chris@5 546 [],
Chris@5 547 ];
Chris@5 548
Chris@5 549 return $test_data;
Chris@5 550 }
Chris@5 551
Chris@5 552 }