84ffa1f8daa9733ca4daad5bb05a7ab2f564a891
[moodle.git] / auth / tests / external_test.php
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/>.
17 /**
18  * Auth external functions tests.
19  *
20  * @package    core_auth
21  * @category   external
22  * @copyright  2016 Juan Leyva
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  * @since      Moodle 3.2
25  */
27 defined('MOODLE_INTERNAL') || die();
29 global $CFG;
31 require_once($CFG->dirroot . '/webservice/tests/helpers.php');
33 /**
34  * External auth API tests.
35  *
36  * @package     core_auth
37  * @copyright   2016 Juan Leyva
38  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
39  * @since       Moodle 3.2
40  */
41 class core_auth_external_testcase extends externallib_advanced_testcase {
43     /**
44      * Set up for every test
45      */
46     public function setUp() {
47         global $CFG;
49         $this->resetAfterTest(true);
50         $CFG->registerauth = 'email';
51     }
53     /**
54      * Test confirm_user
55      */
56     public function test_confirm_user() {
57         global $DB;
59         $username = 'pepe';
60         $password = 'abcdefAª.ªª!!3';
61         $firstname = 'Pepe';
62         $lastname = 'Pérez';
63         $email = 'myemail@no.zbc';
65         // Create new user.
66         $result = auth_email_external::signup_user($username, $password, $firstname, $lastname, $email);
67         $result = external_api::clean_returnvalue(auth_email_external::signup_user_returns(), $result);
68         $this->assertTrue($result['success']);
69         $this->assertEmpty($result['warnings']);
70         $secret = $DB->get_field('user', 'secret', array('username' => $username));
72         // Confirm the user.
73         $result = core_auth_external::confirm_user($username, $secret);
74         $result = external_api::clean_returnvalue(core_auth_external::confirm_user_returns(), $result);
75         $this->assertTrue($result['success']);
76         $this->assertEmpty($result['warnings']);
77         $confirmed = $DB->get_field('user', 'confirmed', array('username' => $username));
78         $this->assertEquals(1, $confirmed);
80         // Try to confirm the user again.
81         $result = core_auth_external::confirm_user($username, $secret);
82         $result = external_api::clean_returnvalue(core_auth_external::confirm_user_returns(), $result);
83         $this->assertFalse($result['success']);
84         $this->assertCount(1, $result['warnings']);
85         $this->assertEquals('alreadyconfirmed', $result['warnings'][0]['warningcode']);
87         // Try to use an invalid secret.
88         $this->expectException('moodle_exception');
89         $this->expectExceptionMessage(get_string('invalidconfirmdata', 'error'));
90         $result = core_auth_external::confirm_user($username, 'zzZZzz');
91     }
93     /**
94      * Test age digital consent not enabled.
95      */
96     public function test_age_digital_consent_verification_is_not_enabled() {
97         global $CFG;
99         $CFG->agedigitalconsentverification = 0;
100         $result = core_auth_external::is_age_digital_consent_verification_enabled();
101         $result = external_api::clean_returnvalue(
102             core_auth_external::is_age_digital_consent_verification_enabled_returns(), $result);
103         $this->assertFalse($result['status']);
104     }
106     /**
107      * Test age digital consent is enabled.
108      */
109     public function test_age_digital_consent_verification_is_enabled() {
110         global $CFG;
112         $CFG->agedigitalconsentverification = 1;
113         $result = core_auth_external::is_age_digital_consent_verification_enabled();
114         $result = external_api::clean_returnvalue(
115             core_auth_external::is_age_digital_consent_verification_enabled_returns(), $result);
116         $this->assertTrue($result['status']);
117     }