MDL-37852 phpunit: Tests for repository::can_be_edited_by_user()

This commit is contained in:
Frederic Massart 2013-02-27 14:30:03 +08:00 committed by Eloy Lafuente (stronk7)
parent 89a9d21a15
commit da9d3a1205

View file

@ -154,4 +154,87 @@ class repositorylib_testcase extends advanced_testcase {
} }
} }
public function test_can_be_edited_by_user() {
$this->resetAfterTest(true);
$syscontext = context_system::instance();
$course = $this->getDataGenerator()->create_course();
$coursecontext = context_course::instance($course->id);
$roleid = create_role('A role', 'arole', 'A role', '');
set_role_contextlevels($roleid, array($syscontext->contextlevel, $coursecontext->contextlevel));
$user = $this->getDataGenerator()->create_user();
$this->setUser($user);
$plugintype = new repository_type('flickr_public');
$plugintype->create(true);
$params = array(
'name' => 'Flickr Public'
);
// Instance on a site level.
$repoid = repository::static_function('flickr_public', 'create', 'flickr_public', 0, $syscontext, $params);
$systemrepo = repository::get_instance($repoid);
role_assign($roleid, $user->id, $syscontext->id);
assign_capability('moodle/site:config', CAP_ALLOW, $roleid, $syscontext, true);
assign_capability('repository/flickr_public:view', CAP_ALLOW, $roleid, $syscontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertTrue($systemrepo->can_be_edited_by_user());
assign_capability('repository/flickr_public:view', CAP_PROHIBIT, $roleid, $syscontext, true);
assign_capability('moodle/site:config', CAP_PROHIBIT, $roleid, $syscontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertFalse($systemrepo->can_be_edited_by_user());
assign_capability('repository/flickr_public:view', CAP_ALLOW, $roleid, $syscontext, true);
assign_capability('moodle/site:config', CAP_PROHIBIT, $roleid, $syscontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertFalse($systemrepo->can_be_edited_by_user());
role_unassign($roleid, $user->id, $syscontext->id);
accesslib_clear_all_caches_for_unit_testing();
// Instance on a course level.
$this->getDataGenerator()->enrol_user($user->id, $course->id, $roleid);
$repoid = repository::static_function('flickr_public', 'create', 'flickr_public', 0, $coursecontext, $params);
$courserepo = repository::get_instance($repoid);
assign_capability('moodle/course:update', CAP_ALLOW, $roleid, $coursecontext, true);
assign_capability('repository/flickr_public:view', CAP_ALLOW, $roleid, $coursecontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertTrue($courserepo->can_be_edited_by_user());
assign_capability('repository/flickr_public:view', CAP_PROHIBIT, $roleid, $coursecontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertFalse($courserepo->can_be_edited_by_user());
assign_capability('moodle/course:update', CAP_ALLOW, $roleid, $coursecontext, true);
assign_capability('repository/flickr_public:view', CAP_PROHIBIT, $roleid, $coursecontext, true);
accesslib_clear_all_caches_for_unit_testing();
$this->assertFalse($courserepo->can_be_edited_by_user());
role_unassign($roleid, $user->id, $coursecontext->id);
accesslib_clear_all_caches_for_unit_testing();
// Instance on a user level.
$otheruser = $this->getDataGenerator()->create_user();
$otherusercontext = context_user::instance($otheruser->id);
role_assign($roleid, $user->id, $syscontext->id);
assign_capability('repository/flickr_public:view', CAP_ALLOW, $roleid, $syscontext, true);
accesslib_clear_all_caches_for_unit_testing();
// Editing someone else's instance.
$repoid = repository::static_function('flickr_public', 'create', 'flickr_public', 0, $otherusercontext, $params);
$userrepo = repository::get_instance($repoid);
$this->assertFalse($userrepo->can_be_edited_by_user());
// Editing my own instance.
$usercontext = context_user::instance($user->id);
$repoid = repository::static_function('flickr_public', 'create', 'flickr_public', 0, $usercontext, $params);
$userrepo = repository::get_instance($repoid);
$this->assertTrue($userrepo->can_be_edited_by_user());
}
} }