Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace core;
18
 
19
/**
20
 * Tests for core\cron.
21
 *
22
 * @package     core
23
 * @copyright   2023 Andrew Nicols <andrew@nicols.co.uk>
24
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25
 * @covers     \core\cron
26
 */
1441 ariadna 27
final class cron_test extends \advanced_testcase {
1 efrain 28
    /**
29
     * Reset relevant caches between tests.
30
     */
31
    public function setUp(): void {
1441 ariadna 32
        parent::setUp();
1 efrain 33
        cron::reset_user_cache();
34
    }
35
 
36
    /**
37
     * Test the setup_user function.
38
     */
39
    public function test_setup_user(): void {
40
        // This function uses the $GLOBALS super global. Disable the VariableNameLowerCase sniff for this function.
41
        // phpcs:disable moodle.NamingConventions.ValidVariableName.VariableNameLowerCase
42
        global $PAGE, $USER, $SESSION, $SITE, $CFG;
43
        $this->resetAfterTest();
44
 
45
        $admin = get_admin();
46
        $user1 = $this->getDataGenerator()->create_user();
47
        $user2 = $this->getDataGenerator()->create_user();
48
        $course = $this->getDataGenerator()->create_course();
49
 
50
        cron::setup_user();
51
        $this->assertSame($admin->id, $USER->id);
52
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
53
        $this->assertSame($CFG->timezone, $USER->timezone);
54
        $this->assertSame('', $USER->lang);
55
        $this->assertSame('', $USER->theme);
56
        $SESSION->test1 = true;
57
        $adminsession = $SESSION;
58
        $adminuser = $USER;
59
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
60
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
61
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
62
        $this->assertSame($GLOBALS['USER'], $USER);
63
 
64
        cron::setup_user(null, $course);
65
        $this->assertSame($admin->id, $USER->id);
66
        $this->assertSame($PAGE->context, \context_course::instance($course->id));
67
        $this->assertSame($adminsession, $SESSION);
68
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
69
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
70
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
71
        $this->assertSame($GLOBALS['USER'], $USER);
72
 
73
        cron::setup_user($user1);
74
        $this->assertSame($user1->id, $USER->id);
75
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
76
        $this->assertNotSame($adminsession, $SESSION);
77
        $this->assertObjectNotHasProperty('test1', $SESSION);
78
        $this->assertEmpty((array)$SESSION);
79
        $usersession1 = $SESSION;
80
        $SESSION->test2 = true;
81
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
82
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
83
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
84
        $this->assertSame($GLOBALS['USER'], $USER);
85
 
86
        cron::setup_user($user1);
87
        $this->assertSame($user1->id, $USER->id);
88
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
89
        $this->assertNotSame($adminsession, $SESSION);
90
        $this->assertSame($usersession1, $SESSION);
91
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
92
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
93
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
94
        $this->assertSame($GLOBALS['USER'], $USER);
95
 
96
        cron::setup_user($user2);
97
        $this->assertSame($user2->id, $USER->id);
98
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
99
        $this->assertNotSame($adminsession, $SESSION);
100
        $this->assertNotSame($usersession1, $SESSION);
101
        $this->assertEmpty((array)$SESSION);
102
        $usersession2 = $SESSION;
103
        $usersession2->test3 = true;
104
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
105
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
106
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
107
        $this->assertSame($GLOBALS['USER'], $USER);
108
 
109
        cron::setup_user($user2, $course);
110
        $this->assertSame($user2->id, $USER->id);
111
        $this->assertSame($PAGE->context, \context_course::instance($course->id));
112
        $this->assertNotSame($adminsession, $SESSION);
113
        $this->assertNotSame($usersession1, $SESSION);
114
        $this->assertSame($usersession2, $SESSION);
115
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
116
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
117
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
118
        $this->assertSame($GLOBALS['USER'], $USER);
119
 
120
        cron::setup_user($user1);
121
        $this->assertSame($user1->id, $USER->id);
122
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
123
        $this->assertNotSame($adminsession, $SESSION);
124
        $this->assertNotSame($usersession1, $SESSION);
125
        $this->assertEmpty((array)$SESSION);
126
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
127
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
128
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
129
        $this->assertSame($GLOBALS['USER'], $USER);
130
 
131
        cron::setup_user();
132
        $this->assertSame($admin->id, $USER->id);
133
        $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
134
        $this->assertSame($adminsession, $SESSION);
135
        $this->assertSame($adminuser, $USER);
136
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
137
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
138
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
139
        $this->assertSame($GLOBALS['USER'], $USER);
140
 
141
        cron::reset_user_cache();
142
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
143
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
144
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
145
        $this->assertSame($GLOBALS['USER'], $USER);
146
 
147
        cron::setup_user();
148
        $this->assertNotSame($adminsession, $SESSION);
149
        $this->assertNotSame($adminuser, $USER);
150
        $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
151
        $this->assertSame($GLOBALS['SESSION'], $SESSION);
152
        $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
153
        $this->assertSame($GLOBALS['USER'], $USER);
154
 
155
        // phpcs:enable
156
    }
157
}