/** * List templates. */ public function test_list_templates() { $syscontextid = context_system::instance()->id; $catcontextid = context_coursecat::instance($this->category->id)->id; // Creating a few templates. $this->setUser($this->creator); $sys1 = $this->create_template(1, true); $sys2 = $this->create_template(2, true); $cat1 = $this->create_template(3, false); $cat2 = $this->create_template(4, false); // User without permission. $this->setUser($this->user); assign_capability('moodle/competency:templateview', CAP_PROHIBIT, $this->userrole, $syscontextid, true); accesslib_clear_all_caches_for_unit_testing(); try { external::list_templates('id', 'ASC', 0, 10, array('contextid' => $syscontextid), 'children', false); $this->fail('Invalid permissions'); } catch (required_capability_exception $e) { // All good. } // User with category permissions. assign_capability('moodle/competency:templateview', CAP_PREVENT, $this->userrole, $syscontextid, true); assign_capability('moodle/competency:templateview', CAP_ALLOW, $this->userrole, $catcontextid, true); accesslib_clear_all_caches_for_unit_testing(); $result = external::list_templates('id', 'ASC', 0, 10, array('contextid' => $syscontextid), 'children', false); $result = external_api::clean_returnvalue(external::list_templates_returns(), $result); $this->assertCount(2, $result); $this->assertEquals($cat1->id, $result[0]['id']); $this->assertEquals($cat2->id, $result[1]['id']); // User with system permissions. assign_capability('moodle/competency:templateview', CAP_ALLOW, $this->userrole, $syscontextid, true); accesslib_clear_all_caches_for_unit_testing(); $result = external::list_templates('id', 'DESC', 0, 3, array('contextid' => $catcontextid), 'parents', false); $result = external_api::clean_returnvalue(external::list_templates_returns(), $result); $this->assertCount(3, $result); $this->assertEquals($cat2->id, $result[0]['id']); $this->assertEquals($cat1->id, $result[1]['id']); $this->assertEquals($sys2->id, $result[2]['id']); }