mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-37852 phpunit: Tests for repository::can_be_edited_by_user()
This commit is contained in:
parent
89a9d21a15
commit
da9d3a1205
1 changed files with 83 additions and 0 deletions
|
@ -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());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue