Merge pull request #18544 from magnolia61/participant_status_notification_default
[civicrm-core.git] / tests / phpunit / CRM / Core / Permission / BaseTest.php
1 <?php
2
3 /**
4 * Class CRM_Core_Permission_BaseTest
5 * @group headless
6 */
7 class CRM_Core_Permission_BaseTest extends CiviUnitTestCase {
8
9 use CRMTraits_ACL_PermissionTrait;
10
11 /**
12 * @return array
13 * (0 => input to translatePermission, 1 => expected output from translatePermission)
14 */
15 public function translateData() {
16 $cases = [];
17
18 $cases[] = ['administer CiviCRM', 'administer CiviCRM'];
19 $cases[] = ['cms:universal name', 'local name'];
20 $cases[] = ['cms:universal name2', 'local name2'];
21 $cases[] = ['cms:unknown universal name', CRM_Core_Permission::ALWAYS_DENY_PERMISSION];
22 $cases[] = ['myruntime:foo', 'foo'];
23 $cases[] = ['otherruntime:foo', CRM_Core_Permission::ALWAYS_DENY_PERMISSION];
24 $cases[] = ['otherruntime:foo:bar', CRM_Core_Permission::ALWAYS_DENY_PERMISSION];
25 $cases[] = [CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION];
26
27 return $cases;
28 }
29
30 /**
31 * @dataProvider translateData
32 *
33 * @param string $input
34 * The name of a permission which should be translated.
35 * @param string $expected
36 * The name of an actual permission (based on translation matrix for "runtime").
37 */
38 public function testTranslate($input, $expected) {
39 $perm = new CRM_Core_Permission_Base();
40 $actual = $perm->translatePermission($input, 'myruntime', [
41 'universal name' => 'local name',
42 'universal name2' => 'local name2',
43 'gunk' => 'gunky',
44 ]);
45 $this->assertEquals($expected, $actual);
46 }
47
48 /**
49 * Test that the user has the implied permission of administer CiviCRM data by virtue of having administer CiviCRM.
50 */
51 public function testImpliedPermission() {
52 $this->createLoggedInUser();
53 CRM_Core_Config::singleton()->userPermissionClass->permissions = [
54 'administer CiviCRM',
55 ];
56 $this->assertTrue(CRM_Core_Permission::check('administer CiviCRM data'));
57 }
58
59 }