From 3b2ea17ec41501c5b0d58bc284d6337df32d7fc2 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Thu, 4 May 2017 10:09:35 +0200 Subject: [PATCH] MDL-55371 mod_assign: Do not return empty users in get_participant WS The WS was returning null users making the WS to fail. --- mod/assign/externallib.php | 4 +++- mod/assign/tests/externallib_test.php | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index 41f74c3c3f9..63251763a67 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -2769,7 +2769,9 @@ class mod_assign_external extends external_api { // Skip the expensive lookup of user detail if we're blind marking or the caller // hasn't asked for user details to be embedded. if (!$assign->is_blind_marking() && $embeduser) { - $return['user'] = user_get_user_details($participant, $course); + if ($userdetails = user_get_user_details($participant, $course)) { + $return['user'] = $userdetails; + } } return $return; diff --git a/mod/assign/tests/externallib_test.php b/mod/assign/tests/externallib_test.php index 3860001bb85..8de3f7d66ce 100644 --- a/mod/assign/tests/externallib_test.php +++ b/mod/assign/tests/externallib_test.php @@ -2203,6 +2203,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $result = mod_assign_external::get_participant($assign->id, $student->id, false); + $result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result); } /** @@ -2224,13 +2225,14 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $result = mod_assign_external::get_participant($assign->id, $student->id, true); + $result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result); $this->assertEquals($student->id, $result['id']); $this->assertFalse(fullname($student) == $result['fullname']); $this->assertFalse($result['submitted']); $this->assertFalse($result['requiregrading']); $this->assertTrue($result['blindmarking']); // Make sure we don't get any additional info. - $this->assertTrue(empty($result['user'])); + $this->assertArrayNotHasKey('user', $result); } /** @@ -2276,13 +2278,14 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $result = mod_assign_external::get_participant($assignmodule->id, $student->id, false); + $result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result); $this->assertEquals($student->id, $result['id']); $this->assertEquals(fullname($student), $result['fullname']); $this->assertTrue($result['submitted']); $this->assertTrue($result['requiregrading']); $this->assertFalse($result['blindmarking']); // Make sure we don't get any additional info. - $this->assertTrue(empty($result['user'])); + $this->assertArrayNotHasKey('user', $result); } /** @@ -2303,6 +2306,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $result = mod_assign_external::get_participant($assign->id, $student->id, true); + $result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result); // Check some of the extended properties we get when requesting the user. $this->assertEquals($student->id, $result['id']); // We should get user infomation back. @@ -2354,6 +2358,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $result = mod_assign_external::get_participant($assignmodule->id, $student->id, false); + $result = external_api::clean_returnvalue(mod_assign_external::get_participant_returns(), $result); // Check some of the extended properties we get when not requesting a summary. $this->assertEquals($student->id, $result['id']); $this->assertEquals($group->id, $result['groupid']); @@ -2388,6 +2393,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->setUser($teacher); $participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, true); + $participants = external_api::clean_returnvalue(mod_assign_external::list_participants_returns(), $participants); $this->assertCount(1, $participants); // Asser that we have a valid response data. @@ -2405,6 +2411,7 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->assertArrayHasKey('enrolledcourses', $participant); $participants = mod_assign_external::list_participants($assignment->id, 0, '', 0, 0, false, false); + $participants = external_api::clean_returnvalue(mod_assign_external::list_participants_returns(), $participants); // Check that the list of courses the participant is enrolled is not returned. $participant = $participants[0]; $this->assertArrayNotHasKey('enrolledcourses', $participant);