diff -u project.inc project.inc --- project.inc +++ project.inc 13 Aug 2010 21:07:42 -0000 @@ -426,14 +426,14 @@ db_query("INSERT INTO {project_projects} (nid, uri, homepage, changelog, cvs, demo, screenshots, documentation, license) VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $node->nid, $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['screenshots'], $node->project['documentation'], $node->project['license']); // project_release_scan_directory($node->project['uri']); $perms = array_fill_keys(array_keys(project_permission_load()), 1); - project_maintainer_add($node->nid, $node->uid, $perms); + project_maintainer_save($node->nid, $node->uid, $perms); } function project_project_update($node) { db_query("UPDATE {project_projects} SET uri = '%s', homepage = '%s', changelog = '%s', cvs = '%s', demo = '%s', screenshots = '%s', documentation = '%s', license = '%s' WHERE nid = %d", $node->project['uri'], $node->project['homepage'], $node->project['changelog'], $node->project['cvs'], $node->project['demo'], $node->project['screenshots'], $node->project['documentation'], $node->project['license'], $node->nid); // project_release_scan_directory($node->project['uri']); $perms = array_fill_keys(array_keys(project_permission_load()), 1); - project_maintainer_update($node->nid, $node->uid, $perms); + project_maintainer_save($node->nid, $node->uid, $perms); } function project_project_delete($node) { diff -u project.test project.test --- project.test +++ project.test 13 Aug 2010 21:53:13 -0000 @@ -398,12 +398,18 @@ $this->assertFieldCheckedByName("maintainers[{$this->owner->uid}][permissions][administer project maintainers]", 'Owners permissions are automatically granted'); $this->assertNoRaw("node/$project->nid/maintainers/delete/{$this->owner->uid}", 'No delete link is displayed for the project owner.'); + // Try to delete the owner anyway and make sure it fails. + $this->drupalGet("node/$project->nid/maintainers/delete/{$this->owner->uid}"); + $this->assertText("You can not delete the project owner ({$this->owner->name}) as a maintainer.", 'Project owner can not be deleted as a maintainer.'); + // Verify that other users do not have access $this->drupalLogin($this->maintainer); $this->drupalGet("node/$project->nid/edit"); $this->assertResponse(403, 'Project edit form is protected.'); $this->drupalGet("node/$project->nid/maintainers"); $this->assertResponse(403, 'Project maintainers form is protected.'); + $this->drupalGet("node/$project->nid/maintainers/delete/{$this->maintainer->uid}"); + $this->assertResponse(403, 'Project delete maintainer form is protected.'); // Add a new user and verify that they are added: // Login as owner @@ -431,6 +437,10 @@ $this->drupalLogin($this->maintainer); $this->drupalGet("node/$project->nid/edit"); $this->assertResponse(200, 'User is correctly granted access to project edit form.'); + $this->drupalGet("node/$project->nid/maintainers"); + $this->assertResponse(403, 'Project maintainers form is protected.'); + $this->drupalGet("node/$project->nid/maintainers/delete/{$this->maintainer->uid}"); + $this->assertResponse(403, 'Project delete maintainer form is protected.'); // Have owner grant administer maintainers permission $this->drupalLogin($this->owner);