. /** * Unit tests for (some of) ../sessionlib.php. * * @package core_session * @category phpunit * @copyright 2103 Rajesh Taneja * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->libdir . '/sessionlib.php'); /** * Unit tests for (some of) ../sessionlib.php. * * @package core_session * @category phpunit * @copyright 2103 Rajesh Taneja * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class core_sessionlib_testcase extends advanced_testcase { /** * Test session_loginas. */ public function test_session_loginas() { global $USER; $this->resetAfterTest(); // Set current user as Admin user and save it for later use. $this->setAdminUser(); $adminuser = $USER; // Create a new user and try admin loginas this user. $user = $this->getDataGenerator()->create_user(); session_loginas($user->id, context_system::instance()); $this->assertSame($user->id, $USER->id); $this->assertSame(context_system::instance(), $USER->loginascontext); $this->assertSame($adminuser->id, $USER->realuser); // Set user as current user and login as admin user in course context. $this->setUser($user); $this->assertNotEquals($adminuser->id, $USER->id); $course = $this->getDataGenerator()->create_course(); $coursecontext = context_course::instance($course->id); // Catch event triggred. $sink = $this->redirectEvents(); session_loginas($adminuser->id, $coursecontext); $events = $sink->get_events(); $sink->close(); $event = array_pop($events); $this->assertSame($adminuser->id, $USER->id); $this->assertSame($coursecontext, $USER->loginascontext); $this->assertSame($user->id, $USER->realuser); // Test event captured has proper information. $this->assertInstanceOf('\core\event\user_loggedinas', $event); $this->assertSame($user->id, $event->objectid); $this->assertSame($adminuser->id, $event->relateduserid); $this->assertSame($course->id, $event->courseid); $this->assertEquals($coursecontext, $event->get_context()); $oldfullname = fullname($user, true); $newfullname = fullname($adminuser, true); $expectedlogdata = array($course->id, "course", "loginas", "../user/view.php?id=$course->id&user=$user->id", "$oldfullname -> $newfullname"); $this->assertEventLegacyLogData($expectedlogdata, $event); } }