Merge branch 'MOODLE_311_STABLE_MDL-59115' of https://github.com/mattporritt/moodle into MOODLE_311_STABLE

This commit is contained in:
Shamim Rezaie
2021-12-01 14:53:57 +11:00
2 changed files with 96 additions and 16 deletions
+18 -16
View File
@@ -252,18 +252,19 @@ class api {
require_once($CFG->dirroot.'/user/lib.php');
$user = new stdClass();
$user->username = $userinfo['username'];
$user->email = $userinfo['email'];
$user->auth = 'oauth2';
$user->mnethostid = $CFG->mnet_localhost_id;
$user->lastname = isset($userinfo['lastname']) ? $userinfo['lastname'] : '';
$user->firstname = isset($userinfo['firstname']) ? $userinfo['firstname'] : '';
$user->alternatename = isset($userinfo['alternatename']) ? $userinfo['alternatename'] : '';
$user->secret = random_string(15);
$user->password = '';
// This user is confirmed.
$user->confirmed = 1;
$user->confirmed = 1; // Set the user to confirmed.
// Map supplied issuer user info to Moodle user fields.
$userfieldmapping = new \core\oauth2\user_field_mapping();
foreach ($userfieldmapping->get_internalfield_list() as $field) {
if (isset($userinfo[$field]) && $userinfo[$field]) {
$user->$field = $userinfo[$field];
}
}
$user->id = user_create_user($user, false, true);
@@ -300,18 +301,19 @@ class api {
}
$user = new stdClass();
$user->username = $userinfo['username'];
$user->email = $userinfo['email'];
$user->auth = 'oauth2';
$user->mnethostid = $CFG->mnet_localhost_id;
$user->lastname = isset($userinfo['lastname']) ? $userinfo['lastname'] : '';
$user->firstname = isset($userinfo['firstname']) ? $userinfo['firstname'] : '';
$user->alternatename = isset($userinfo['alternatename']) ? $userinfo['alternatename'] : '';
$user->secret = random_string(15);
$user->password = '';
// This user is not confirmed.
$user->confirmed = 0;
$user->confirmed = 0; // The user is not yet confirmed.
// Map supplied issuer user info to Moodle user fields.
$userfieldmapping = new \core\oauth2\user_field_mapping();
foreach ($userfieldmapping->get_internalfield_list() as $field) {
if (isset($userinfo[$field]) && $userinfo[$field]) {
$user->$field = $userinfo[$field];
}
}
$user->id = user_create_user($user, false, true);
+78
View File
@@ -98,6 +98,45 @@ class auth_oauth2_external_testcase extends advanced_testcase {
$this->assertCount(1, $linkedlogins);
}
/**
* Test creating a new confirmed account.
* Including testing that user profile fields are correctly set.
*
* @covers \auth_oauth2\api::create_new_confirmed_account
*/
public function test_create_new_confirmed_account() {
global $DB;
$this->resetAfterTest();
$this->setAdminUser();
$issuer = \core\oauth2\api::create_standard_issuer('microsoft');
$info = [];
$info['username'] = 'apple';
$info['email'] = '[email protected]';
$info['firstname'] = 'Apple';
$info['lastname'] = 'Fruit';
$info['alternatename'] = 'Beatles';
$info['idnumber'] = '123456';
$info['city'] = 'Melbourne';
$info['country'] = 'AU';
$info['institution'] = 'ACME Inc';
$info['department'] = 'Misc Explosives';
$createduser = \auth_oauth2\api::create_new_confirmed_account($info, $issuer);
// Get actual user record from DB to check.
$userdata = $DB->get_record('user', ['id' => $createduser->id]);
// Confirm each value supplied from issuers is saved into the user record.
foreach ($info as $key => $value) {
$this->assertEquals($value, $userdata->$key);
}
// Explicitly test the user is confirmed.
$this->assertEquals(1, $userdata->confirmed);
}
/**
* Test auto-confirming linked logins.
*/
@@ -159,4 +198,43 @@ class auth_oauth2_external_testcase extends advanced_testcase {
set_config('auth', 'manual');
$this->assertFalse(\auth_oauth2\api::is_enabled());
}
/**
* Test creating a user via the send confirm account email method.
* Including testing that user profile fields are correctly set.
*
* @covers \auth_oauth2\api::send_confirm_account_email
*/
public function test_send_confirm_account_email() {
global $DB;
$this->resetAfterTest();
$this->setAdminUser();
$issuer = \core\oauth2\api::create_standard_issuer('microsoft');
$info = [];
$info['username'] = 'apple';
$info['email'] = '[email protected]';
$info['firstname'] = 'Apple';
$info['lastname'] = 'Fruit';
$info['alternatename'] = 'Beatles';
$info['idnumber'] = '123456';
$info['city'] = 'Melbourne';
$info['country'] = 'AU';
$info['institution'] = 'ACME Inc';
$info['department'] = 'Misc Explosives';
$createduser = \auth_oauth2\api::send_confirm_account_email($info, $issuer);
// Get actual user record from DB to check.
$userdata = $DB->get_record('user', ['id' => $createduser->id]);
// Confirm each value supplied from issuers is saved into the user record.
foreach ($info as $key => $value) {
$this->assertEquals($value, $userdata->$key);
}
// Explicitly test the user is not yet confirmed.
$this->assertEquals(0, $userdata->confirmed);
}
}