public function testHasAccessReturnsPermissionSets(array $roles, array $roleAssignments)
{
/** @var $userHandlerMock \PHPUnit_Framework_MockObject_MockObject */
$userHandlerMock = $this->getPersistenceMock()->userHandler();
$roleDomainMapper = $this->getRoleDomainMapperMock(['buildDomainPolicyObject']);
$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();
$count = 0;
/* @var $roleAssignments \eZ\Publish\SPI\Persistence\User\RoleAssignment[] */
foreach ($roleAssignments as $i => $roleAssignment) {
$permissionSet = array('limitation' => null);
foreach ($roles[$roleAssignment->roleId]->policies as $k => $policy) {
$policyName = 'policy-' . $i . '-' . $k;
$return = $this->returnValue($policyName);
$permissionSet['policies'][] = $policyName;
$roleDomainMapper->expects($this->at($count++))->method('buildDomainPolicyObject')->with($policy)->will($return);
}
if (!empty($permissionSet['policies'])) {
$permissionSets[] = $permissionSet;
}
}
/* @var $repositoryMock \eZ\Publish\Core\Repository\Repository */
self::assertEquals($permissionSets, $permissionResolverMock->hasAccess('test-module', 'test-function'));
}