MDL-52656 unittest: Reset original session while setting user
authorRajesh Taneja <rajesh.taneja@gmail.com>
Thu, 7 Jan 2016 03:27:35 +0000 (13:27 +1000)
committerRajesh Taneja <rajesh.taneja@gmail.com>
Thu, 7 Jan 2016 23:41:28 +0000 (09:41 +1000)
lib/phpunit/classes/advanced_testcase.php
lib/phpunit/tests/advanced_test.php
mod/forum/tests/lib_test.php

index d09d5cd..7ee75eb 100644 (file)
@@ -492,6 +492,9 @@ abstract class advanced_testcase extends base_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);
     }
 
index cc2d8e8..cf00787 100644 (file)
@@ -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() {
index ef53341..58cfdf7 100644 (file)
@@ -2170,7 +2170,6 @@ class mod_forum_lib_testcase extends advanced_testcase {
     }
 
     public function test_print_overview_groups() {
-        global $SESSION;
         $this->resetAfterTest();
         $course1 = self::getDataGenerator()->create_course();
         $group1 = $this->getDataGenerator()->create_group(array('courseid' => $course1->id));
@@ -2220,10 +2219,6 @@ class mod_forum_lib_testcase extends advanced_testcase {
         $this->assertCount(1, $results[$course1->id]);
         $this->assertArrayHasKey('forum', $results[$course1->id]);
 
-        // As viewer2 (different group to post).
-        // Temporary hack to workaround for MDL-52656.
-        $SESSION->currentgroup = null;
-
         $this->setUser($viewer2->id);
         $results = array();
         forum_print_overview($courses, $results);
@@ -2290,7 +2285,6 @@ class mod_forum_lib_testcase extends advanced_testcase {
      * @dataProvider print_overview_timed_provider
      */
     public function test_print_overview_timed_groups($config, $hasresult) {
-        global $SESSION;
         $this->resetAfterTest();
         $course1 = self::getDataGenerator()->create_course();
         $group1 = $this->getDataGenerator()->create_group(array('courseid' => $course1->id));
@@ -2351,10 +2345,6 @@ class mod_forum_lib_testcase extends advanced_testcase {
             $this->assertCount(0, $results);
         }
 
-        // As viewer2 (different group to post).
-        // Temporary hack to workaround for MDL-52656.
-        $SESSION->currentgroup = null;
-
         $this->setUser($viewer2->id);
         $results = array();
         forum_print_overview($courses, $results);