og-8.x-1.x-dev/tests/src/Unit/OgAccessTest.php
tests/src/Unit/OgAccessTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\og\Unit;
/**
* Tests access.
*
* @group og
* @coversDefaultClass \Drupal\og\OgAccess
*/
class OgAccessTest extends OgAccessTestBase {
/**
* Tests access for a non-group related entity.
*
* @coversDefaultmethod ::userAccess
* @dataProvider permissionsProvider
*/
public function testUserAccessNotGroup(string $operation): void {
$this->groupTypeManager->isGroup($this->entityTypeId, $this->bundle)->willReturn(FALSE);
$user_access = $this->ogAccess->userAccess($this->group, $operation);
$this->assertTrue($user_access->isNeutral());
}
/**
* Tests access to entity.
*
* @coversDefaultmethod ::userAccess
* @dataProvider permissionsProvider
*/
public function testAccessByOperation(string $operation): void {
$user_access = $this->ogAccess->userAccess($this->group, $operation, $this->user->reveal());
// We populate the allowed permissions cache in
// OgAccessTestBase::setup().
$condition = $operation == 'update group' ? $user_access->isAllowed() : $user_access->isNeutral();
$this->assertTrue($condition);
}
/**
* Tests access by the super user, which is user ID 1.
*
* @coversDefaultmethod ::userAccess
* @dataProvider permissionsProvider
*/
public function testUserAccessUser1(string $operation): void {
$this->user->id()->willReturn(1);
$user_access = $this->ogAccess->userAccess($this->group, $operation, $this->user->reveal());
$this->assertTrue($user_access->isAllowed());
}
/**
* Tests access by a group administrator.
*
* @coversDefaultmethod ::userAccess
* @dataProvider permissionsProvider
*/
public function testUserAccessAdminPermission(string $operation): void {
$this->user->hasPermission('administer organic groups')->willReturn(TRUE);
$user_access = $this->ogAccess->userAccess($this->group, $operation, $this->user->reveal());
$this->assertTrue($user_access->isAllowed());
}
/**
* Tests access by the owner of the entity.
*
* @coversDefaultmethod ::userAccess
* @dataProvider permissionsProvider
*/
public function testUserAccessOwner(string $operation): void {
$this->config->get('group_manager_full_access')->willReturn(TRUE);
$user_access = $this->ogAccess->userAccess($this->groupEntity(TRUE)->reveal(), $operation, $this->user->reveal());
$this->assertTrue($user_access->isAllowed());
}
}
