function WorkflowAccessControlHandlerTest::checkAccessProvider

Same name in other branches
  1. 9 core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php \Drupal\Tests\workflows\Kernel\WorkflowAccessControlHandlerTest::checkAccessProvider()
  2. 8.9.x core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php \Drupal\Tests\workflows\Kernel\WorkflowAccessControlHandlerTest::checkAccessProvider()
  3. 11.x core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php \Drupal\Tests\workflows\Kernel\WorkflowAccessControlHandlerTest::checkAccessProvider()

Data provider for ::testCheckAccess.

Return value

array

File

core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php, line 124

Class

WorkflowAccessControlHandlerTest
@coversDefaultClass \Drupal\workflows\WorkflowAccessControlHandler @group workflows @group #slow

Namespace

Drupal\Tests\workflows\Kernel

Code

public static function checkAccessProvider() {
    $container = new ContainerBuilder();
    $cache_contexts_manager = (new Prophet())->prophesize(CacheContextsManager::class);
    $cache_contexts_manager->assertValidTokens()
        ->willReturn(TRUE);
    $cache_contexts_manager->reveal();
    $container->set('cache_contexts_manager', $cache_contexts_manager);
    \Drupal::setContainer($container);
    return [
        'Admin view' => [
            'adminUser',
            'view',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Admin update' => [
            'adminUser',
            'update',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Admin delete' => [
            'adminUser',
            'delete',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Admin delete only state' => [
            'adminUser',
            'delete-state:foo',
            AccessResult::neutral()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ]),
            [
                'foo' => FALSE,
            ],
        ],
        'Admin delete one of two states' => [
            'adminUser',
            'delete-state:foo',
            AccessResult::allowed()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ])
                ->addCacheContexts([
                'user.permissions',
            ]),
            [
                'foo' => FALSE,
                'bar' => FALSE,
            ],
        ],
        'Admin delete required state when there are >1 states' => [
            'adminUser',
            'delete-state:foo',
            AccessResult::allowed()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ])
                ->addCacheContexts([
                'user.permissions',
            ]),
            [
                'foo' => TRUE,
                'bar' => FALSE,
            ],
        ],
        'User view' => [
            'user',
            'view',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'User update' => [
            'user',
            'update',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'User delete' => [
            'user',
            'delete',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'User delete only state' => [
            'user',
            'delete-state:foo',
            AccessResult::neutral()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ]),
            [
                'foo' => FALSE,
            ],
        ],
        'User delete one of two states' => [
            'user',
            'delete-state:foo',
            AccessResult::neutral()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ])
                ->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
            [
                'foo' => FALSE,
                'bar' => FALSE,
            ],
        ],
        'User delete required state when there are >1 states' => [
            'user',
            'delete-state:foo',
            AccessResult::neutral()->addCacheTags([
                'config:workflows.workflow.test_workflow',
            ])
                ->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
            [
                'foo' => TRUE,
                'bar' => FALSE,
            ],
        ],
        'Update state for user, uses admin permission by default' => [
            'user',
            'update-state:foo',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'Update state for admin, uses admin permission by default' => [
            'adminUser',
            'update-state:foo',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Add state for user, uses admin permission by default' => [
            'user',
            'add-state',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'Add state for admin, uses admin permission by default' => [
            'adminUser',
            'add-state',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Add transition for user, uses admin permission by default' => [
            'user',
            'add-transition',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'Add transition for admin, uses admin permission by default' => [
            'adminUser',
            'add-transition',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Edit transition for user, uses admin permission by default' => [
            'user',
            'edit-transition:foo',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'Edit transition for admin, uses admin permission by default' => [
            'adminUser',
            'edit-transition:foo',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
        'Delete transition for user, uses admin permission by default' => [
            'user',
            'delete-transition:foo',
            AccessResult::neutral()->addCacheContexts([
                'user.permissions',
            ])
                ->setReason("The 'administer workflows' permission is required."),
        ],
        'Delete transition for admin, uses admin permission by default' => [
            'adminUser',
            'delete-transition:foo',
            AccessResult::allowed()->addCacheContexts([
                'user.permissions',
            ]),
        ],
    ];
}

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