Skip to content

Commit

Permalink
MDL-45131 course: Add validation for returned parameters in WS tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jleyva committed Apr 16, 2015
1 parent 52ab107 commit bdf9f4d
Showing 1 changed file with 36 additions and 2 deletions.
38 changes: 36 additions & 2 deletions course/tests/externallib_test.php
Expand Up @@ -243,6 +243,8 @@ public function test_get_categories() {
// Retrieve categories from parent.
$categories = core_course_external::get_categories(array(
array('key' => 'parent', 'value' => $category3->id)), 1);
$categories = external_api::clean_returnvalue(core_course_external::get_categories_returns(), $categories);

$this->assertEquals(2, count($categories));

// Retrieve all categories.
Expand Down Expand Up @@ -937,6 +939,8 @@ public function test_update_courses() {
$courses = array($course1, $course2);

$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$COURSE = $origcourse; // Restore $COURSE. Instead of using the OLD one set by the previous line.

// Check that right number of courses were created.
Expand Down Expand Up @@ -994,6 +998,8 @@ public function test_update_courses() {
$this->unassignUserCapability('moodle/course:update', $contextid, $roleid);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course category without capability.
Expand All @@ -1005,6 +1011,8 @@ public function test_update_courses() {
$course1['categoryid'] = $category2->id;
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course fullname without capability.
Expand All @@ -1014,10 +1022,14 @@ public function test_update_courses() {
$this->setUser($user);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['fullname'] = 'Testing fullname without permission';
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course shortname without capability.
Expand All @@ -1027,10 +1039,14 @@ public function test_update_courses() {
$this->setUser($user);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['shortname'] = 'Testing shortname without permission';
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course idnumber without capability.
Expand All @@ -1040,10 +1056,14 @@ public function test_update_courses() {
$this->setUser($user);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['idnumber'] = 'NEWIDNUMBER';
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course summary without capability.
Expand All @@ -1053,10 +1073,14 @@ public function test_update_courses() {
$this->setUser($user);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['summary'] = 'New summary';
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course with invalid summary format.
Expand All @@ -1065,10 +1089,14 @@ public function test_update_courses() {
$this->setUser($user);
self::getDataGenerator()->enrol_user($user->id, $course1['id'], $roleid);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['summaryformat'] = 10;
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));

// Try update course visibility without capability.
Expand All @@ -1079,10 +1107,14 @@ public function test_update_courses() {
$course1['summaryformat'] = FORMAT_MOODLE;
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(0, count($updatedcoursewarnings['warnings']));
$course1['visible'] = 0;
$courses = array($course1);
$updatedcoursewarnings = core_course_external::update_courses($courses);
$updatedcoursewarnings = external_api::clean_returnvalue(core_course_external::update_courses_returns(),
$updatedcoursewarnings);
$this->assertEquals(1, count($updatedcoursewarnings['warnings']));
}

Expand Down Expand Up @@ -1401,7 +1433,8 @@ public function test_view_course() {
// Redirect events to the sink, so we can recover them later.
$sink = $this->redirectEvents();

core_course_external::view_course($course->id, 1);
$result = core_course_external::view_course($course->id, 1);
$result = external_api::clean_returnvalue(core_course_external::view_course_returns(), $result);
$events = $sink->get_events();
$event = reset($events);

Expand All @@ -1410,7 +1443,8 @@ public function test_view_course() {
$this->assertEquals(context_course::instance($course->id), $event->get_context());
$this->assertEquals(1, $event->other['coursesectionnumber']);

core_course_external::view_course($course->id);
$result = core_course_external::view_course($course->id);
$result = external_api::clean_returnvalue(core_course_external::view_course_returns(), $result);
$events = $sink->get_events();
$event = array_pop($events);
$sink->close();
Expand Down

0 comments on commit bdf9f4d

Please sign in to comment.