diff --git a/Repository/Tests/RoleServiceTest.php b/Repository/Tests/RoleServiceTest.php index d05bcf8cd..90cd37f6a 100644 --- a/Repository/Tests/RoleServiceTest.php +++ b/Repository/Tests/RoleServiceTest.php @@ -1781,6 +1781,51 @@ public function testDeletePolicy() $this->assertSame(array(), $role->getPolicies()); } + /** + * Test for the addPolicyByRoleDraft() method. + * + * @see \eZ\Publish\API\Repository\RoleService::addPolicyByRoleDraft() + */ + public function testAddPolicyWithRoleAssignment() + { + $repository = $this->getRepository(); + + /* BEGIN: Use Case */ + $roleService = $repository->getRoleService(); + $userService = $repository->getUserService(); + + /* Create new user group */ + $mainGroupId = $this->generateId('group', 4); + $parentUserGroup = $userService->loadUserGroup($mainGroupId); + $userGroupCreate = $userService->newUserGroupCreateStruct('eng-US'); + $userGroupCreate->setField('name', 'newUserGroup'); + $userGroup = $userService->createUserGroup($userGroupCreate, $parentUserGroup); + + /* Create Role */ + $roleCreate = $roleService->newRoleCreateStruct('newRole'); + $roleDraft = $roleService->createRole($roleCreate); + $roleService->publishRoleDraft($roleDraft); + + $role = $roleService->loadRole($roleDraft->id); + $roleService->assignRoleToUserGroup($role, $userGroup); + + $roleAssignmentsBeforeNewPolicy = $roleService->getRoleAssignments($role)[0]; + + /* Add new policy to existing role */ + $roleUpdateDraft = $roleService->createRoleDraft($role); + $roleUpdateDraft = $roleService->addPolicyByRoleDraft( + $roleUpdateDraft, + $roleService->newPolicyCreateStruct('content', 'create') + ); + $roleService->publishRoleDraft($roleUpdateDraft); + + $roleAfterUpdate = $roleService->loadRole($role->id); + $roleAssignmentsAfterNewPolicy = $roleService->getRoleAssignments($roleAfterUpdate)[0]; + /* END: Use Case */ + + $this->assertNotEquals($roleAssignmentsBeforeNewPolicy->id, $roleAssignmentsAfterNewPolicy->id); + } + /** * Test loading user/group role assignments. *