function DateFormatAccessControlHandlerTest::providerTestAccess

Provides test cases for access control based on user permissions and entity lock status.

Return value

array An array of test cases.

File

core/modules/system/tests/src/Kernel/DateFormatAccessControlHandlerTest.php, line 79

Class

DateFormatAccessControlHandlerTest
@coversDefaultClass \Drupal\system\DateFormatAccessControlHandler[[api-linebreak]] @group system

Namespace

Drupal\Tests\system\Kernel

Code

public static function providerTestAccess() : array {
  $originalContainer = \Drupal::hasContainer() ? \Drupal::getContainer() : NULL;
  $c = new ContainerBuilder();
  $cache_contexts_manager = (new Prophet())->prophesize(CacheContextsManager::class);
  $cache_contexts_manager->assertValidTokens()
    ->willReturn(TRUE);
  $cache_contexts_manager->reveal();
  $c->set('cache_contexts_manager', $cache_contexts_manager);
  \Drupal::setContainer($c);
  $data = [
    'No permission + unlocked' => [
      [],
      'unlocked',
      AccessResult::allowed(),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required."),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required.")
        ->addCacheTags([
        'rendered',
      ]),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required.")
        ->addCacheTags([
        'rendered',
      ]),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required."),
    ],
    'no permission + locked' => [
      [],
      'locked',
      AccessResult::allowed(),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required."),
      AccessResult::forbidden()->addCacheTags([
        'rendered',
      ])
        ->setReason("The DateFormat config entity is locked."),
      AccessResult::forbidden()->addCacheTags([
        'rendered',
      ])
        ->setReason("The DateFormat config entity is locked."),
      AccessResult::neutral()->addCacheContexts([
        'user.permissions',
      ])
        ->setReason("The 'administer site configuration' permission is required."),
    ],
    'admin + unlocked' => [
      [
        'administer site configuration',
      ],
      'unlocked',
      AccessResult::allowed(),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ]),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ])
        ->addCacheTags([
        'rendered',
      ]),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ])
        ->addCacheTags([
        'rendered',
      ]),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ]),
    ],
    'admin + locked' => [
      [
        'administer site configuration',
      ],
      'locked',
      AccessResult::allowed(),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ]),
      AccessResult::forbidden()->addCacheTags([
        'rendered',
      ])
        ->setReason("The DateFormat config entity is locked."),
      AccessResult::forbidden()->addCacheTags([
        'rendered',
      ])
        ->setReason("The DateFormat config entity is locked."),
      AccessResult::allowed()->addCacheContexts([
        'user.permissions',
      ]),
    ],
  ];
  // Restore the original container if needed.
  if ($originalContainer) {
    \Drupal::setContainer($originalContainer);
  }
  return $data;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.