diff --git a/lib/phpunit/classes/advanced_testcase.php b/lib/phpunit/classes/advanced_testcase.php index 6995ba7d3ce..d37a849a9f2 100644 --- a/lib/phpunit/classes/advanced_testcase.php +++ b/lib/phpunit/classes/advanced_testcase.php @@ -485,6 +485,9 @@ abstract class advanced_testcase extends PHPUnit_Framework_TestCase { unset($user->access); unset($user->preference); + // Enusre session is empty, as it may contain caches and user specific info. + \core\session\manager::init_empty_session(); + \core\session\manager::set_user($user); } diff --git a/lib/phpunit/tests/advanced_test.php b/lib/phpunit/tests/advanced_test.php index cc2d8e8b5c4..cf00787a6ab 100644 --- a/lib/phpunit/tests/advanced_test.php +++ b/lib/phpunit/tests/advanced_test.php @@ -72,7 +72,9 @@ class core_phpunit_advanced_testcase extends advanced_testcase { } public function test_set_user() { - global $USER, $DB; + global $USER, $DB, $SESSION; + + $this->resetAfterTest(); $this->assertEquals(0, $USER->id); $this->assertSame($_SESSION['USER'], $USER); @@ -109,6 +111,11 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $this->assertEquals(0, $USER->id); $this->assertSame($_SESSION['USER'], $USER); $this->assertSame($GLOBALS['USER'], $USER); + + // Ensure session is reset after setUser, as it may contain extra info. + $SESSION->sometestvalue = true; + $this->setUser($user); + $this->assertObjectNotHasAttribute('sometestvalue', $SESSION); } public function test_set_admin_user() {