From d59ef9c5ab930e052f2312d9107dc253c945cec9 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sat, 12 May 2012 21:06:24 +0200 Subject: [PATCH] MDL-32926 exorcise setUser(2) evil from phpunit --- lib/phpunit/classes/advanced_testcase.php | 21 +++++++++++++++++++- lib/phpunit/tests/advanced_test.php | 22 +++++++++++++++++++++ lib/tests/pagelib_test.php | 5 +++-- lib/tests/repositorylib_test.php | 2 +- mod/assignment/tests/generator_test.php | 4 ++-- mod/workshop/form/rubric/tests/lib_test.php | 2 +- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/lib/phpunit/classes/advanced_testcase.php b/lib/phpunit/classes/advanced_testcase.php index cd0ddcd1f3e..2afb8c30e31 100644 --- a/lib/phpunit/classes/advanced_testcase.php +++ b/lib/phpunit/classes/advanced_testcase.php @@ -258,7 +258,7 @@ abstract class advanced_testcase extends PHPUnit_Framework_TestCase { /** * Set current $USER, reset access cache. * @static - * @param null|int|stdClass $user user record, null means non-logged-in, integer means userid + * @param null|int|stdClass $user user record, null or 0 means non-logged-in, positive integer means userid * @return void */ public static function setUser($user = null) { @@ -275,10 +275,29 @@ abstract class advanced_testcase extends PHPUnit_Framework_TestCase { } unset($user->description); unset($user->access); + unset($user->preference); session_set_user($user); } + /** + * Set current $USER to admin account, reset access cache. + * @static + * @return void + */ + public static function setAdminUser() { + self::setUser(2); + } + + /** + * Set current $USER to guest account, reset access cache. + * @static + * @return void + */ + public static function setGuestUser() { + self::setUser(1); + } + /** * Get data generator * @static diff --git a/lib/phpunit/tests/advanced_test.php b/lib/phpunit/tests/advanced_test.php index e82164ddd86..302ab1f7bb5 100644 --- a/lib/phpunit/tests/advanced_test.php +++ b/lib/phpunit/tests/advanced_test.php @@ -43,6 +43,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $this->assertSame($_SESSION['USER'], $USER); $user = $DB->get_record('user', array('id'=>2)); + $this->assertNotEmpty($user); $this->setUser($user); $this->assertEquals(2, $USER->id); $this->assertEquals(2, $_SESSION['USER']->id); @@ -59,6 +60,7 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $this->assertSame($_SESSION['USER'], $USER); $USER = $DB->get_record('user', array('id'=>1)); + $this->assertNotEmpty($USER); $this->assertEquals(1, $USER->id); $this->assertEquals(1, $_SESSION['USER']->id); $this->assertSame($_SESSION['USER'], $USER); @@ -68,6 +70,26 @@ class core_phpunit_advanced_testcase extends advanced_testcase { $this->assertSame($_SESSION['USER'], $USER); } + public function test_set_admin_user() { + global $USER; + + $this->resetAfterTest(true); + + $this->setAdminUser(); + $this->assertEquals($USER->id, 2); + $this->assertTrue(is_siteadmin()); + } + + public function test_set_guest_user() { + global $USER; + + $this->resetAfterTest(true); + + $this->setGuestUser(); + $this->assertEquals($USER->id, 1); + $this->assertTrue(isguestuser()); + } + public function test_database_reset() { global $DB; diff --git a/lib/tests/pagelib_test.php b/lib/tests/pagelib_test.php index c81f251b7d7..04814d0e506 100644 --- a/lib/tests/pagelib_test.php +++ b/lib/tests/pagelib_test.php @@ -51,7 +51,7 @@ class moodle_page_test extends advanced_testcase { protected $testpage; public function setUp() { - parent::setUser(); + parent::setUp(); $this->resetAfterTest(); $this->testpage = new testable_moodle_page(); } @@ -561,7 +561,8 @@ class moodle_page_editing_test extends advanced_testcase { protected $originaluserediting; protected function setUp() { - $this->setUser(2); // admin + parent::setUp(); + $this->setAdminUser(); $this->testpage = new testable_moodle_page(); $this->testpage->set_context(get_context_instance(CONTEXT_SYSTEM)); $this->resetAfterTest(); diff --git a/lib/tests/repositorylib_test.php b/lib/tests/repositorylib_test.php index b805c2cdd54..55ca73120d0 100644 --- a/lib/tests/repositorylib_test.php +++ b/lib/tests/repositorylib_test.php @@ -39,7 +39,7 @@ class repositorylib_testcase extends advanced_testcase { $PAGE->set_url('/'); $PAGE->set_course($SITE); - $this->setUser(2); + $this->setAdminUser(); $args = new stdClass(); $args->accepted_types = '*'; diff --git a/mod/assignment/tests/generator_test.php b/mod/assignment/tests/generator_test.php index 69e14561793..e72bcfc61b0 100644 --- a/mod/assignment/tests/generator_test.php +++ b/mod/assignment/tests/generator_test.php @@ -70,8 +70,8 @@ class mod_assignment_generator_testcase extends advanced_testcase { $this->assertEquals(GRADE_TYPE_VALUE, $gitem->gradetype); // test eventslib integration - $this->setUser(2); // admin + $this->setAdminUser(); $generator->create_instance(array('course'=>$course->id, 'timedue'=>(time()+60*60+24))); - $this->setUser(0); + $this->setUser(null); } } diff --git a/mod/workshop/form/rubric/tests/lib_test.php b/mod/workshop/form/rubric/tests/lib_test.php index 1137e0e5b64..422b6d70981 100644 --- a/mod/workshop/form/rubric/tests/lib_test.php +++ b/mod/workshop/form/rubric/tests/lib_test.php @@ -43,7 +43,7 @@ class workshopform_rubric_strategy_test extends advanced_testcase { * Setup testing environment */ protected function setUp() { - parent::setUser(); + parent::setUp(); $cm = new stdclass(); $course = new stdclass(); $context = new stdclass();