/** * Setup of a clean InDefero. * * It creates all the tables for the application. */ function IDF_Migrations_Install_setup($params = null) { $models = array('IDF_Project', 'IDF_Tag', 'IDF_Issue', 'IDF_IssueComment', 'IDF_Conf', 'IDF_Upload', 'IDF_Search_Occ', 'IDF_IssueFile', 'IDF_Commit', 'IDF_Timeline', 'IDF_WikiPage', 'IDF_WikiRevision', 'IDF_Review', 'IDF_Review_Patch', 'IDF_Review_Comment', 'IDF_Review_FileComment', 'IDF_Key', 'IDF_Scm_Cache_Git', 'IDF_Queue', 'IDF_Gconf'); $db = Pluf::db(); $schema = new Pluf_DB_Schema($db); foreach ($models as $model) { $schema->model = new $model(); $schema->createTables(); } // Install the permissions $perm = new Pluf_Permission(); $perm->name = 'Project membership'; $perm->code_name = 'project-member'; $perm->description = 'Permission given to project members.'; $perm->application = 'IDF'; $perm->create(); $perm = new Pluf_Permission(); $perm->name = 'Project ownership'; $perm->code_name = 'project-owner'; $perm->description = 'Permission given to project owners.'; $perm->application = 'IDF'; $perm->create(); $perm = new Pluf_Permission(); $perm->name = 'Project authorized users'; $perm->code_name = 'project-authorized-user'; $perm->description = 'Permission given to users allowed to access a project.'; $perm->application = 'IDF'; $perm->create(); }
function testDump() { $p = new Pluf_Permission(); $p->name = 'test permission'; $p->code_name = 'test'; $p->description = 'Simple test permission.'; $p->application = 'Pluf'; $p->create(); $json = Pluf_Test_Fixture::dump('Pluf_Permission'); $this->assertEqual('[{"model":"Pluf_Permission","pk":1,"fields":{"id":1,"name":"test permission","code_name":"test","description":"Simple test permission.","application":"Pluf"}}]', $json); }
/** * Add the private column for the project. */ function IDF_Migrations_6PrivateProject_up($params = null) { $table = Pluf::factory('IDF_Project')->getSqlTable(); $sql = array(); $sql['PostgreSQL'] = 'ALTER TABLE ' . $table . ' ADD COLUMN "private" INTEGER DEFAULT 0'; $sql['MySQL'] = 'ALTER TABLE ' . $table . ' ADD COLUMN `private` INTEGER DEFAULT 0'; $db = Pluf::db(); $engine = Pluf::f('db_engine'); if (!isset($sql[$engine])) { throw new Exception('SQLite complex migration not supported.'); } $db->execute($sql[$engine]); $perm = new Pluf_Permission(); $perm->name = 'Project authorized users'; $perm->code_name = 'project-authorized-user'; $perm->description = 'Permission given to users allowed to access a project.'; $perm->application = 'IDF'; $perm->create(); }
public function testRowPermission() { $user = new Pluf_User(1); $group = new Pluf_Group(); $group->name = 'testRowPermission'; $group->description = 'testRowPermission'; $group->create(); for ($i = 1; $i <= 5; $i++) { $mess = new Pluf_Message(); $mess->user = $user; $mess->message = 'Dummy object to test against: ' . $i; $mess->create(); } $perm = new Pluf_Permission(); $perm->application = 'Pluf_RowPermission'; $perm->code_name = 'test1'; $perm->name = 'test1'; $perm->description = 'test1'; $perm->create(); // Permission through group $mess = new Pluf_Message(1); Pluf_RowPermission::add($group, $mess, $perm); $this->assertEquals(false, $user->hasPerm('Pluf_RowPermission.test1', $mess)); $user->setAssoc($group); $user->getAllPermissions(true); //reset the cache $this->assertEquals(true, $user->hasPerm('Pluf_RowPermission.test1', $mess)); $user->delAssoc($group); $user->getAllPermissions(true); //reset the cache $this->assertEquals(false, $user->hasPerm('Pluf_RowPermission.test1', $mess)); $user->setAssoc($group); $user->getAllPermissions(true); //reset the cache $this->assertEquals(true, $user->hasPerm('Pluf_RowPermission.test1', $mess)); Pluf_RowPermission::remove($group, $mess, $perm); $user->getAllPermissions(true); //reset the cache $this->assertEquals(false, $user->hasPerm('Pluf_RowPermission.test1', $mess)); // Permission through direct user Pluf_RowPermission::add($user, $mess, $perm); $user->getAllPermissions(true); //reset the cache $this->assertEquals(true, $user->hasPerm('Pluf_RowPermission.test1', $mess)); Pluf_RowPermission::remove($user, $mess, $perm); $user->getAllPermissions(true); //reset the cache $this->assertEquals(false, $user->hasPerm('Pluf_RowPermission.test1', $mess)); // Using string for the permission. Pluf_RowPermission::add($user, $mess, 'Pluf_RowPermission.test1'); $user->getAllPermissions(true); //reset the cache $this->assertEquals(true, $user->hasPerm('Pluf_RowPermission.test1', $mess)); Pluf_RowPermission::remove($user, $mess, 'Pluf_RowPermission.test1'); $user->getAllPermissions(true); //reset the cache $this->assertEquals(false, $user->hasPerm('Pluf_RowPermission.test1', $mess)); }