X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FCore%2FPermission%2FBaseTest.php;h=dca187540c7a06c588217662ae223e5b4b57609e;hb=57a4d21c775b0c925dcb580672ccec6076ce8e86;hp=6d954a22551aca91594600050fca4fc1b1e3a018;hpb=674cb8b854f6008090d4dcce9372ee76346a198f;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Core/Permission/BaseTest.php b/tests/phpunit/CRM/Core/Permission/BaseTest.php index 6d954a2255..63ddc5fee4 100644 --- a/tests/phpunit/CRM/Core/Permission/BaseTest.php +++ b/tests/phpunit/CRM/Core/Permission/BaseTest.php @@ -1,46 +1,70 @@ input to translatePermission, 1 => expected output from translatePermission) */ - public function translateData() { - $cases = array(); - - $cases[] = array("administer CiviCRM", "administer CiviCRM"); - $cases[] = array("cms:universal name", "local name"); - $cases[] = array("cms:universal name2", "local name2"); - $cases[] = array("cms:unknown universal name", CRM_Core_Permission::ALWAYS_DENY_PERMISSION); - $cases[] = array("myruntime:foo", "foo"); - $cases[] = array("otherruntime:foo", CRM_Core_Permission::ALWAYS_DENY_PERMISSION); - $cases[] = array("otherruntime:foo:bar", CRM_Core_Permission::ALWAYS_DENY_PERMISSION); - $cases[] = array(CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION); + public function translateData(): array { + $cases = []; + + $cases[] = ['administer CiviCRM', 'administer CiviCRM']; + $cases[] = ['cms:universal name', 'local name']; + $cases[] = ['cms:universal name2', 'local name2']; + $cases[] = ['cms:unknown universal name', CRM_Core_Permission::ALWAYS_DENY_PERMISSION]; + $cases[] = ['myruntime:foo', 'foo']; + $cases[] = ['otherruntime:foo', CRM_Core_Permission::ALWAYS_DENY_PERMISSION]; + $cases[] = ['otherruntime:foo:bar', CRM_Core_Permission::ALWAYS_DENY_PERMISSION]; + $cases[] = [CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION]; return $cases; } /** * @dataProvider translateData + * * @param string $input * The name of a permission which should be translated. * @param string $expected * The name of an actual permission (based on translation matrix for "runtime"). */ - public function testTranslate($input, $expected) { + public function testTranslate(string $input, string $expected): void { $perm = new CRM_Core_Permission_Base(); - $actual = $perm->translatePermission($input, "myruntime", array( + $actual = $perm->translatePermission($input, 'myruntime', [ 'universal name' => 'local name', 'universal name2' => 'local name2', 'gunk' => 'gunky', - )); + ]); $this->assertEquals($expected, $actual); } + /** + * Test that the user has the implied permission of administer CiviCRM data by virtue of having administer CiviCRM. + */ + public function testImpliedPermission(): void { + $this->createLoggedInUser(); + CRM_Core_Config::singleton()->userPermissionClass->permissions = [ + 'administer CiviCRM', + ]; + $this->assertTrue(CRM_Core_Permission::check('administer CiviCRM data')); + } + + /** + * Test that the super permission gives the implied permission of the whole shebang. + */ + public function testImpliedPermissionSuperDuper(): void { + $this->createLoggedInUser(); + CRM_Core_Config::singleton()->userPermissionClass->permissions = [ + 'all CiviCRM permissions and ACLs', + ]; + $this->assertTrue(CRM_Core_Permission::check('view all contacts')); + } + }