Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 11
Línea 35... Línea 35...
35
 * @copyright  2017 Juan Leyva
35
 * @copyright  2017 Juan Leyva
36
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37
 */
37
 */
38
class login_lib_test extends \advanced_testcase {
38
class login_lib_test extends \advanced_testcase {
Línea 39... Línea 39...
39
 
39
 
40
    public function test_core_login_process_password_reset_one_time_without_username_protection() {
40
    public function test_core_login_process_password_reset_one_time_without_username_protection(): void {
Línea 41... Línea 41...
41
        global $CFG;
41
        global $CFG;
42
 
42
 
43
        $this->resetAfterTest();
43
        $this->resetAfterTest();
Línea 57... Línea 57...
57
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
57
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
58
            quoted_printable_decode($email->body));
58
            quoted_printable_decode($email->body));
59
        $sink->clear();
59
        $sink->clear();
60
    }
60
    }
Línea 61... Línea 61...
61
 
61
 
62
    public function test_core_login_process_password_reset_two_consecutive_times_without_username_protection() {
62
    public function test_core_login_process_password_reset_two_consecutive_times_without_username_protection(): void {
Línea 63... Línea 63...
63
        global $CFG;
63
        global $CFG;
64
 
64
 
65
        $this->resetAfterTest();
65
        $this->resetAfterTest();
Línea 82... Línea 82...
82
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
82
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
83
            quoted_printable_decode($email->body));
83
            quoted_printable_decode($email->body));
84
        $sink->clear();
84
        $sink->clear();
85
    }
85
    }
Línea 86... Línea 86...
86
 
86
 
87
    public function test_core_login_process_password_reset_three_consecutive_times_without_username_protection() {
87
    public function test_core_login_process_password_reset_three_consecutive_times_without_username_protection(): void {
Línea 88... Línea 88...
88
        global $CFG;
88
        global $CFG;
89
 
89
 
90
        $this->resetAfterTest();
90
        $this->resetAfterTest();
Línea 103... Línea 103...
103
        $this->assertSame('emailalreadysent', $status);
103
        $this->assertSame('emailalreadysent', $status);
104
        $emails = $sink->get_messages();
104
        $emails = $sink->get_messages();
105
        $this->assertCount(2, $emails); // Third time email is not sent.
105
        $this->assertCount(2, $emails); // Third time email is not sent.
106
    }
106
    }
Línea 107... Línea 107...
107
 
107
 
108
    public function test_core_login_process_password_reset_one_time_with_username_protection() {
108
    public function test_core_login_process_password_reset_one_time_with_username_protection(): void {
Línea 109... Línea 109...
109
        global $CFG;
109
        global $CFG;
110
 
110
 
111
        $this->resetAfterTest();
111
        $this->resetAfterTest();
Línea 125... Línea 125...
125
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
125
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
126
            quoted_printable_decode($email->body));
126
            quoted_printable_decode($email->body));
127
        $sink->clear();
127
        $sink->clear();
128
    }
128
    }
Línea 129... Línea 129...
129
 
129
 
130
    public function test_core_login_process_password_reset_with_preexisting_expired_request_without_username_protection() {
130
    public function test_core_login_process_password_reset_with_preexisting_expired_request_without_username_protection(): void {
Línea 131... Línea 131...
131
        global $CFG, $DB;
131
        global $CFG, $DB;
132
 
132
 
133
        $this->resetAfterTest();
133
        $this->resetAfterTest();
Línea 159... Línea 159...
159
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
159
        $this->assertMatchesRegularExpression('/A password reset was requested for your account/',
160
            quoted_printable_decode($email->body));
160
            quoted_printable_decode($email->body));
161
        $sink->clear();
161
        $sink->clear();
162
    }
162
    }
Línea 163... Línea 163...
163
 
163
 
164
    public function test_core_login_process_password_reset_disabled_auth() {
164
    public function test_core_login_process_password_reset_disabled_auth(): void {
165
        $this->resetAfterTest();
165
        $this->resetAfterTest();
Línea 166... Línea 166...
166
        $user = $this->getDataGenerator()->create_user(array('auth' => 'oauth2'));
166
        $user = $this->getDataGenerator()->create_user(array('auth' => 'oauth2'));
Línea 177... Línea 177...
177
        $this->assertMatchesRegularExpression('/Unfortunately your account on this site is disabled/',
177
        $this->assertMatchesRegularExpression('/Unfortunately your account on this site is disabled/',
178
            quoted_printable_decode($email->body));
178
            quoted_printable_decode($email->body));
179
        $sink->clear();
179
        $sink->clear();
180
    }
180
    }
Línea 181... Línea 181...
181
 
181
 
182
    public function test_core_login_process_password_reset_auth_not_supporting_email_reset() {
182
    public function test_core_login_process_password_reset_auth_not_supporting_email_reset(): void {
Línea 183... Línea 183...
183
        global $CFG;
183
        global $CFG;
184
 
184
 
185
        $this->resetAfterTest();
185
        $this->resetAfterTest();
Línea 198... Línea 198...
198
        $this->assertMatchesRegularExpression('/Unfortunately passwords cannot be reset on this site/',
198
        $this->assertMatchesRegularExpression('/Unfortunately passwords cannot be reset on this site/',
199
            quoted_printable_decode($email->body));
199
            quoted_printable_decode($email->body));
200
        $sink->clear();
200
        $sink->clear();
201
    }
201
    }
Línea 202... Línea 202...
202
 
202
 
203
    public function test_core_login_process_password_reset_missing_parameters() {
203
    public function test_core_login_process_password_reset_missing_parameters(): void {
204
        $this->expectException('moodle_exception');
204
        $this->expectException('moodle_exception');
205
        $this->expectExceptionMessage(get_string('cannotmailconfirm', 'error'));
205
        $this->expectExceptionMessage(get_string('cannotmailconfirm', 'error'));
206
        core_login_process_password_reset(null, null);
206
        core_login_process_password_reset(null, null);
Línea 207... Línea 207...
207
    }
207
    }
208
 
208
 
209
    public function test_core_login_process_password_reset_invalid_username_with_username_protection() {
209
    public function test_core_login_process_password_reset_invalid_username_with_username_protection(): void {
210
        global $CFG;
210
        global $CFG;
211
        $this->resetAfterTest();
211
        $this->resetAfterTest();
212
        $CFG->protectusernames = 1;
212
        $CFG->protectusernames = 1;
213
        list($status, $notice, $url) = core_login_process_password_reset('72347234nasdfasdf/Ds', null);
213
        list($status, $notice, $url) = core_login_process_password_reset('72347234nasdfasdf/Ds', null);
Línea 214... Línea 214...
214
        $this->assertEquals('emailpasswordconfirmmaybesent', $status);
214
        $this->assertEquals('emailpasswordconfirmmaybesent', $status);
215
    }
215
    }
216
 
216
 
217
    public function test_core_login_process_password_reset_invalid_username_without_username_protection() {
217
    public function test_core_login_process_password_reset_invalid_username_without_username_protection(): void {
218
        global $CFG;
218
        global $CFG;
219
        $this->resetAfterTest();
219
        $this->resetAfterTest();
220
        $CFG->protectusernames = 0;
220
        $CFG->protectusernames = 0;
Línea 221... Línea 221...
221
        list($status, $notice, $url) = core_login_process_password_reset('72347234nasdfasdf/Ds', null);
221
        list($status, $notice, $url) = core_login_process_password_reset('72347234nasdfasdf/Ds', null);
222
        $this->assertEquals('emailpasswordconfirmnotsent', $status);
222
        $this->assertEquals('emailpasswordconfirmnotsent', $status);
223
    }
223
    }
224
 
224
 
225
    public function test_core_login_process_password_reset_invalid_email_without_username_protection() {
225
    public function test_core_login_process_password_reset_invalid_email_without_username_protection(): void {
226
        global $CFG;
226
        global $CFG;
Línea 326... Línea 326...
326
     * @dataProvider forgot_password_data_provider
326
     * @dataProvider forgot_password_data_provider
327
     * @param array $data Key-value array containing username and email data.
327
     * @param array $data Key-value array containing username and email data.
328
     * @param array $errors Key-value array containing error messages for the username and email fields.
328
     * @param array $errors Key-value array containing error messages for the username and email fields.
329
     * @param array $options Options for $CFG->protectusernames, $CFG->allowaccountssameemail and $user->confirmed.
329
     * @param array $options Options for $CFG->protectusernames, $CFG->allowaccountssameemail and $user->confirmed.
330
     */
330
     */
331
    public function test_core_login_validate_forgot_password_data($data, $errors = [], $options = []) {
331
    public function test_core_login_validate_forgot_password_data($data, $errors = [], $options = []): void {
332
        $this->resetAfterTest();
332
        $this->resetAfterTest();
Línea 333... Línea 333...
333
 
333
 
334
        // Set config settings we need for our environment.
334
        // Set config settings we need for our environment.
335
        $protectusernames = $options['protectusernames'] ?? 1;
335
        $protectusernames = $options['protectusernames'] ?? 1;
Línea 381... Línea 381...
381
    /**
381
    /**
382
     * Test searching for the user record by matching the provided email address when resetting password.
382
     * Test searching for the user record by matching the provided email address when resetting password.
383
     *
383
     *
384
     * Email addresses should be handled as case-insensitive but accent sensitive.
384
     * Email addresses should be handled as case-insensitive but accent sensitive.
385
     */
385
     */
386
    public function test_core_login_process_password_reset_email_sensitivity() {
386
    public function test_core_login_process_password_reset_email_sensitivity(): void {
387
        global $CFG;
387
        global $CFG;
388
        require_once($CFG->libdir.'/phpmailer/moodle_phpmailer.php');
388
        require_once($CFG->libdir.'/phpmailer/moodle_phpmailer.php');
Línea 389... Línea 389...
389
 
389
 
390
        $this->resetAfterTest();
390
        $this->resetAfterTest();