/** * Tests searching users as another user. */ public function test_messagearea_search_users_as_other_user() { $this->resetAfterTest(true); // The person doing the search. $this->setAdminUser(); // Create some users. $user1 = new stdClass(); $user1->firstname = 'User'; $user1->lastname = 'One'; $user1 = self::getDataGenerator()->create_user($user1); $user2 = new stdClass(); $user2->firstname = 'User search'; $user2->lastname = 'Two'; $user2 = self::getDataGenerator()->create_user($user2); $user3 = new stdClass(); $user3->firstname = 'User search'; $user3->lastname = 'Three'; $user3 = self::getDataGenerator()->create_user($user3); $user4 = new stdClass(); $user4->firstname = 'User'; $user4->lastname = 'Four'; $user4 = self::getDataGenerator()->create_user($user4); $user5 = new stdClass(); $user5->firstname = 'User search'; $user5->lastname = 'Five'; $user5 = self::getDataGenerator()->create_user($user5); $user6 = new stdClass(); $user6->firstname = 'User'; $user6->lastname = 'Six'; $user6 = self::getDataGenerator()->create_user($user6); // Create some courses. $course1 = new stdClass(); $course1->fullname = 'Course search'; $course1->shortname = 'One'; $course1 = $this->getDataGenerator()->create_course($course1); $course2 = new stdClass(); $course2->fullname = 'Course'; $course2->shortname = 'Two'; $course2 = $this->getDataGenerator()->create_course($course2); $course3 = new stdClass(); $course3->fullname = 'Course'; $course3->shortname = 'Three search'; $course3 = $this->getDataGenerator()->create_course($course3); // Add some users as contacts. message_add_contact($user2->id, 0, $user1->id); message_add_contact($user3->id, 0, $user1->id); message_add_contact($user4->id, 0, $user1->id); // Perform a search. $result = core_message_external::data_for_messagearea_search_users($user1->id, 'search'); // We need to execute the return values cleaning process to simulate the web service server. $result = external_api::clean_returnvalue(core_message_external::data_for_messagearea_search_users_returns(), $result); // Confirm that we returns contacts, courses and non-contacts. $contacts = $result['contacts']; $courses = $result['courses']; $noncontacts = $result['noncontacts']; // Check that we retrieved the correct contacts. $this->assertCount(2, $contacts); $this->assertEquals($user3->id, $contacts[0]['userid']); $this->assertEquals($user2->id, $contacts[1]['userid']); // Check that we retrieved the correct courses. $this->assertCount(0, $courses); // Check that we retrieved the correct non-contacts. $this->assertCount(1, $noncontacts); $this->assertEquals($user5->id, $noncontacts[0]['userid']); }