function setup_role_manager_mocks(Permission $permission, Role $role, RoleSet $role_set, RoleManager $role_manager) { $permission->permission_id = 1; $permission->name = 'Permission Name'; $permission->description = 'A dummy permission'; $role->role_id = 1; $role->name = 'members'; $role->description = 'A dummy role'; $role->hasPermission(Argument::type('RBAC\\Permission'))->willReturn(true); $role->getPermissions()->willReturn(array($permission)); $role->addPermission(Argument::any())->willReturn(true); $role_set->addRole(Argument::type('RBAC\\Role\\Role'))->willReturn(true); $role_set->has_permission('Permission Name')->willReturn(true); $role_manager->roleFetchByName('members')->willReturn($role); $role_manager->roleFetch()->willReturn(array($role)); $role_manager->roleSave(Argument::any())->willReturn(true); $role_manager->permissionFetch()->willReturn(array($permission)); //assigns a role set object to the UserAccount object $role_manager->loadSubjectRoles(Argument::type('PolyAuth\\UserAccount'))->will(function ($args) use($role_set) { $user = $args[0]; $user->loadRoleSet($role_set); return $user; }); //adds a role to the role set of the role object $role_manager->roleAddSubject(Argument::cetera())->will(function ($args) { $role = $args[0]; $user = $args[1]; $role_set = $user->getRoleSet(); $role_set->addRole($role); $user->loadRoleSet($role_set); return $user; }); return ['role_manager' => $role_manager]; }
/** * @covers Rbac\Role\Role::getPermissions */ public function testRoleCanGetPermissions() { $role = new Role('php'); $role->addPermission('foo'); $role->addPermission('bar'); $expectedPermissions = ['foo' => 'foo', 'bar' => 'bar']; $this->assertEquals($expectedPermissions, $role->getPermissions()); }
/** * @param Role $role * * @return bool */ public function roleSave(Role $role) { if ($role->role_id) { $query = "\n UPDATE\n auth_role\n SET\n `name` = :name, description = :description, updated_on = " . $this->sql_time_func . "\n WHERE\n role_id = :role_id\n "; } else { $query = "\n INSERT INTO auth_role\n (name, description, added_on, updated_on)\n VALUES\n (:name, :description, " . $this->sql_time_func . ", " . $this->sql_time_func . ")\n "; } $cur = $this->db->prepare($query); $cur->bindParam(":name", $role->name, PDO::PARAM_STR, 32); $cur->bindParam(":description", $role->description, PDO::PARAM_STR); if ($role->role_id) { $cur->bindParam(":role_id", $role->role_id, PDO::PARAM_INT); } $this->db->beginTransaction(); try { $cur->execute(); if (!$role->role_id) { $role->role_id = (int) $this->db->lastInsertId(); } $this->db->commit(); } catch (PDOException $db_err) { $this->db->rollBack(); if ($this->logger) { $this->logger->error("Failed to save role to DB", ['exception' => $db_err]); } return false; } foreach ($role->getPermissions() as $permission) { // TODO: Something on fail $this->rolePermissionAdd($role, $permission); } return true; }