eZ\Publish\Core\Repository\Tests\Service\Mock\PermissionTest::testHasAccessReturnsPermissionSetsWithRoleLimitation PHP Метод

testHasAccessReturnsPermissionSetsWithRoleLimitation() публичный Метод

Test for the hasAccess() method.
public testHasAccessReturnsPermissionSetsWithRoleLimitation ( array $roles, array $roleAssignments )
$roles array
$roleAssignments array
    public function testHasAccessReturnsPermissionSetsWithRoleLimitation(array $roles, array $roleAssignments)
    {
        /** @var $userHandlerMock \PHPUnit_Framework_MockObject_MockObject */
        $userHandlerMock = $this->getPersistenceMock()->userHandler();
        $limitationTypeMock = $this->getMock('eZ\\Publish\\SPI\\Limitation\\Type');
        $limitationService = $this->getLimitationServiceMock();
        $roleDomainMapper = $this->getRoleDomainMapperMock();
        $permissionResolverMock = $this->getPermissionResolverMock(['getCurrentUserReference']);
        $permissionResolverMock->expects($this->once())->method('getCurrentUserReference')->will($this->returnValue(new UserReference(14)));
        $userHandlerMock->expects($this->once())->method('loadRoleAssignmentsByGroupId')->with($this->isType('integer'), $this->equalTo(true))->will($this->returnValue($roleAssignments));
        foreach ($roleAssignments as $at => $roleAssignment) {
            $userHandlerMock->expects($this->at($at + 1))->method('loadRole')->with($roleAssignment->roleId)->will($this->returnValue($roles[$roleAssignment->roleId]));
        }
        $permissionSets = array();
        /** @var $roleAssignments \eZ\Publish\SPI\Persistence\User\RoleAssignment[] */
        foreach ($roleAssignments as $i => $roleAssignment) {
            $permissionSet = array();
            foreach ($roles[$roleAssignment->roleId]->policies as $k => $policy) {
                $policyName = "policy-{$i}-{$k}";
                $permissionSet['policies'][] = $policyName;
                $roleDomainMapper->expects($this->at($k))->method('buildDomainPolicyObject')->with($policy)->will($this->returnValue($policyName));
            }
            $permissionSet['limitation'] = "limitation-{$i}";
            $limitationTypeMock->expects($this->at($i))->method('buildValue')->with($roleAssignment->values)->will($this->returnValue($permissionSet['limitation']));
            $limitationService->expects($this->any())->method('getLimitationType')->with($roleAssignment->limitationIdentifier)->will($this->returnValue($limitationTypeMock));
            $permissionSets[] = $permissionSet;
        }
        self::assertEquals($permissionSets, $permissionResolverMock->hasAccess('test-module', 'test-function'));
    }