. * * 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\{ AclManager, Acl\Table, Acl\AccessChecker\AccessCheckerFactory, Acl\OwnershipChecker\OwnershipCheckerFactory, Acl\OwnerUserFieldProvider, Acl\Table\TableFactory, Acl\GlobalRestriction, Acl\Map\MapFactory, ORM\EntityManager, }; use Espo\Entities\{ User, }; class AclManagerTest extends \PHPUnit\Framework\TestCase { /** * @var AclManager */ private $aclManager; /** * @var AccessCheckerFactory */ private $accessCheckerFactory; /** * @var OwnershipCheckerFactory */ private $ownershipCheckerFactory; /** * @var TableFactory */ private $tableFactory; /** * @var GlobalRestriction */ private $globalRestriction; /** * @var User */ private $user; private $mapFactory; protected function setUp(): void { $this->user = $this->createMock(User::class); $this->table = $this->createMock(Table::class); $this->accessCheckerFactory = $this->createMock(AccessCheckerFactory::class); $this->ownershipCheckerFactory = $this->createMock(OwnershipCheckerFactory::class); $this->tableFactory = $this->createMock(TableFactory::class); $this->mapFactory = $this->createMock(MapFactory::class); $this->globalRestriction = $this->createMock(GlobalRestriction::class); $this->aclManager = new AclManager( $this->accessCheckerFactory, $this->ownershipCheckerFactory, $this->tableFactory, $this->mapFactory, $this->globalRestriction, $this->createMock(OwnerUserFieldProvider::class), $this->createMock(EntityManager::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('assignment') ->willReturn(Table::LEVEL_YES); $this->aclManager->getPermissionLevel($this->user, 'assignment'); } public function testGetPermissionLevel2(): void { $this->initTableFactory($this->user, $this->table); $this->table ->expects($this->once()) ->method('getPermissionLevel') ->with('assignment') ->willReturn(Table::LEVEL_YES); $this->aclManager->getPermissionLevel($this->user, 'assignmentPermission'); } }