You are here

public function WebformEntityAccessControlHandlerTest::providerCheckAccess in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Unit/WebformEntityAccessControlHandlerTest.php \Drupal\Tests\webform\Unit\WebformEntityAccessControlHandlerTest::providerCheckAccess()

Data provider for testCheckAccess().

See also

testCheckAccess()

File

tests/src/Unit/WebformEntityAccessControlHandlerTest.php, line 229

Class

WebformEntityAccessControlHandlerTest
Tests webform access handler.

Namespace

Drupal\Tests\webform\Unit

Code

public function providerCheckAccess() {
  $tests = [];

  /**************************************************************************/

  // The "view" HTML operation.

  /**************************************************************************/
  $tests[] = [
    'view',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
        'request_format',
        'url.path',
      ],
    ],
    'View when nobody',
  ];
  $tests[] = [
    'view',
    [
      'permissions' => [
        'administer webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [],
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'View when has "administer webform" permission',
  ];
  $tests[] = [
    'view',
    [
      'access_rules' => [
        'administer',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'View when has "administer" access rule',
  ];

  /**************************************************************************/

  // The "view" configuration operation.

  /**************************************************************************/
  $tests[] = [
    'view',
    [
      'permissions' => [
        'access any webform configuration',
      ],
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
        'request_format',
        'url.path',
      ],
    ],
    'View when has "access any webform configuration" permission and request form is HTML',
  ];
  $tests[] = [
    'view',
    [
      'request_format' => 'not_html',
      'permissions' => [
        'access any webform configuration',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'request_format',
        'url.path',
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'View when has "access any webform configuration" permission and request form is NOT HTML',
  ];
  $tests[] = [
    'view',
    [
      'permissions' => [
        'access own webform configuration',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
        'request_format',
        'url.path',
      ],
    ],
    'View when has "access own webform configuration" permission and is not owner and request form is HTML',
  ];
  $tests[] = [
    'view',
    [
      'request_format' => 'not_html',
      'permissions' => [
        'access own webform configuration',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
        'request_format',
        'url.path',
      ],
    ],
    'View when has "access own webform configuration" permission and is not owner and request form is NOT HTML',
  ];
  $tests[] = [
    'view',
    [
      'permissions' => [
        'access own webform configuration',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
        'request_format',
        'url.path',
      ],
    ],
    'View when has "access own webform configuration" permission and is owner and request form is HTML',
  ];
  $tests[] = [
    'view',
    [
      'request_format' => 'not_html',
      'permissions' => [
        'access own webform configuration',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'request_format',
        'url.path',
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'View when has "access own webform configuration" permission and is owner and request form is NOT HTML',
  ];

  /**************************************************************************/

  // The "test" operation.

  /**************************************************************************/
  $tests[] = [
    'test',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Test when nobody',
  ];
  $tests[] = [
    'test',
    [
      'permissions' => [
        'administer webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [],
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Test when has "administer webform" permission',
  ];
  $tests[] = [
    'test',
    [
      'access_rules' => [
        'administer',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Test when has "administer" access rule',
  ];
  $tests[] = [
    'test',
    [
      'permissions' => [
        'edit any webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Test when has "edit any webform" permission',
  ];
  $tests[] = [
    'test',
    [
      'permissions' => [
        'edit own webform',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Test when has "edit own webform" permission and is not owner',
  ];
  $tests[] = [
    'test',
    [
      'permissions' => [
        'edit own webform',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Test when has "edit own webform" permission and is owner',
  ];

  /**************************************************************************/

  // The "update" operation.

  /**************************************************************************/
  $tests[] = [
    'update',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Update when nobody',
  ];
  $tests[] = [
    'update',
    [
      'permissions' => [
        'administer webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [],
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Update when has "administer webform" permission',
  ];
  $tests[] = [
    'update',
    [
      'access_rules' => [
        'administer',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Update when has "administer" access rule',
  ];
  $tests[] = [
    'update',
    [
      'permissions' => [
        'edit any webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Update when has "edit any webform" permission',
  ];
  $tests[] = [
    'update',
    [
      'permission' => [
        'edit own webform',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Update when has "edit own webform" permission and is not owner',
  ];
  $tests[] = [
    'update',
    [
      'permissions' => [
        'edit own webform',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Update when has "edit own webform" permission and is owner',
  ];

  /**************************************************************************/

  // The "duplicate" operation.

  /**************************************************************************/
  $tests[] = [
    'duplicate',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Duplicate when nobody',
  ];
  $tests[] = [
    'duplicate',
    [
      'permissions' => [
        'administer webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [],
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Duplicate when has "administer webform" permission',
  ];
  $tests[] = [
    'duplicate',
    [
      'access_rules' => [
        'administer',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Duplicate when has "administer" access rule',
  ];
  $tests[] = [
    'duplicate',
    [
      'permissions' => [
        'create webform',
      ],
      'webform_is_template' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Duplicate when has "create webform" permission and webform is not template',
  ];
  $tests[] = [
    'duplicate',
    [
      'permissions' => [
        'create webform',
        'edit any webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Duplicate when has "create webform" and "edit any webform" permissions',
  ];
  $tests[] = [
    'duplicate',
    [
      'permisssions' => [
        'create webform',
        'edit own webform',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Duplicate when has "create webform" and "edit own webform" permissions and is not owner',
  ];
  $tests[] = [
    'duplicate',
    [
      'permissions' => [
        'create webform',
        'edit own webform',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Duplicate when has "create webform" and "edit own webform" permissions and is owner',
  ];

  /**************************************************************************/

  // The "delete" operation.

  /**************************************************************************/
  $tests[] = [
    'delete',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Delete when nobody',
  ];
  $tests[] = [
    'delete',
    [
      'permissions' => [
        'administer webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [],
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Delete when has "administer webform" permission',
  ];
  $tests[] = [
    'delete',
    [
      'access_rules' => [
        'administer',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Delete when has "administer" access rule',
  ];
  $tests[] = [
    'delete',
    [
      'permissions' => [
        'delete any webform',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Delete when has "delete any webform" permission',
  ];
  $tests[] = [
    'delete',
    [
      'permissions' => [
        'delete own webform',
      ],
      'account_is_webform_owner' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Delete when has "delete own webform" permission and is not owner',
  ];
  $tests[] = [
    'delete',
    [
      'permissions' => [
        'delete own webform',
      ],
      'account_is_webform_owner' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user',
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Delete when has "delete own webform" permission and is owner',
  ];

  /**************************************************************************/

  // The "purge" operation.

  /**************************************************************************/
  $tests[] = [
    'submission_purge',
    [
      'access_rules' => [
        'purge_any',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Purge when has "purge_any" access rule',
  ];
  $tests[] = [
    'submission_purge_any',
    [
      'access_rules' => [
        'purge_any',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Purge when has "purge_any" access rule',
  ];

  /**************************************************************************/

  // The "view" operation.

  /**************************************************************************/
  $tests[] = [
    'submission_view_any',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Submission view any when nobody',
  ];
  $tests[] = [
    'submission_view_any',
    [
      'permissions' => [
        'view any webform submission',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Submission view any when has "view any webform submission" permission',
  ];
  $tests[] = [
    'submission_view_any',
    [
      'permissions' => [
        'view own webform submission',
      ],
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Submission view any when has "view own webform submission" permission but is not owner',
  ];
  $tests[] = [
    'submission_view_own',
    [],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Submission view own when nobody',
  ];
  $tests[] = [
    'submission_view_own',
    [
      'permissions' => [
        'view own webform submission',
      ],
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_contexts' => [
        'user.permissions',
      ],
    ],
    'Submission view own when has "view own webform submission" permission',
  ];

  // The "submission_page" operation.
  $tests[] = [
    'submission_page',
    [
      'webform_is_open' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Submission page when nobody',
  ];
  $tests[] = [
    'submission_page',
    [
      'submission_load_from_token' => TRUE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
        'webform_submission_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'url',
        'user.permissions',
        'webform_cache_context',
        'webform_submission_cache_context',
      ],
    ],
    'Submission page when accessible through token',
  ];
  $tests[] = [
    'submission_page',
    [
      'webform_is_template' => TRUE,
      'webform_is_open' => FALSE,
    ],
    [
      'access_result_is_allowed' => FALSE,
      'access_result_cache_tags' => [
        'webform_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'user.permissions',
        'webform_cache_context',
      ],
    ],
    'Submission page when the webform is template without create access',
  ];
  $tests[] = [
    'submission_page',
    [
      'access_rules' => [
        'create',
      ],
      'webform_is_open' => FALSE,
    ],
    [
      'access_result_is_allowed' => TRUE,
      'access_result_cache_tags' => [
        'access_rules_cache_tag',
      ],
      'access_result_cache_contexts' => [
        'access_rules_cache_context',
      ],
    ],
    'Submission page when the webform allows "page"',
  ];
  return $tests;
}