. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace tests\unit\Espo\Core; use Espo\Core\Acl\AccessChecker\AccessCheckerFactory; use Espo\Core\Acl\GlobalRestriction; use Espo\Core\Acl\Map\MapFactory; use Espo\Core\Acl\OwnershipChecker\OwnershipCheckerFactory; use Espo\Core\Acl\OwnerUserFieldProvider; use Espo\Core\Acl\Permission; use Espo\Core\Acl\Table; use Espo\Core\Acl\Table\TableFactory; use Espo\Core\AclManager; use Espo\Core\ORM\EntityManager; use Espo\Core\Utils\Event\EventDispatcher; use Espo\Entities\User; use PHPUnit\Framework\TestCase; class AclManagerTest extends TestCase { /** @var AclManager */ private $aclManager; /** @var TableFactory */ private $tableFactory; /** @var User */ private $user; private $table; protected function setUp(): void { $this->user = $this->createMock(User::class); $this->table = $this->createMock(Table::class); $accessCheckerFactory = $this->createMock(AccessCheckerFactory::class); $ownershipCheckerFactory = $this->createMock(OwnershipCheckerFactory::class); $this->tableFactory = $this->createMock(TableFactory::class); $mapFactory = $this->createMock(MapFactory::class); $globalRestriction = $this->createMock(GlobalRestriction::class); $this->aclManager = new AclManager( accessCheckerFactory: $accessCheckerFactory, ownershipCheckerFactory: $ownershipCheckerFactory, tableFactory: $this->tableFactory, mapFactory: $mapFactory, globalRestriction: $globalRestriction, ownerUserFieldProvider: $this->createMock(OwnerUserFieldProvider::class), entityManager: $this->createMock(EntityManager::class), eventDispatcher: $this->createMock(EventDispatcher::class), ); } private function initTableFactory(User $user, Table $table): void { $this->tableFactory ->expects($this->once()) ->method('create') ->with($user) ->willReturn($table); } public function testGetPermissionLevel1(): void { $this->initTableFactory($this->user, $this->table); $this->table ->expects($this->once()) ->method('getPermissionLevel') ->with(Permission::ASSIGNMENT) ->willReturn(Table::LEVEL_YES); $this->aclManager->getPermissionLevel($this->user, Permission::ASSIGNMENT); } public function testGetPermissionLevel2(): void { $this->initTableFactory($this->user, $this->table); $this->table ->expects($this->once()) ->method('getPermissionLevel') ->with(Permission::ASSIGNMENT) ->willReturn(Table::LEVEL_YES); $this->aclManager->getPermissionLevel($this->user, Permission::ASSIGNMENT); } }