MDL-76862 user: Unit test for setting user home page preferences

This commit is contained in:
Jake Dallimore 2023-01-12 11:28:37 +08:00 committed by Jun Pataleta
parent f3c335b376
commit 6a6f5b79dd

View File

@ -1675,4 +1675,36 @@ class externallib_test extends externallib_advanced_testcase {
$this->assertEquals('email', $user['extrafields'][0]['name']);
}
}
/**
* Test verifying that update_user_preferences prevents changes to the default homepage for other users.
*/
public function test_update_user_preferences_homepage_permission_callback() {
global $DB;
$this->resetAfterTest();
$user = self::getDataGenerator()->create_user();
$this->setUser($user);
$adminuser = get_admin();
// Allow user selection of the default homepage via preferences.
set_config('defaulthomepage', HOMEPAGE_USER);
// Try to save another user's home page preference which uses the permissioncallback.
$preferences = [
[
'name' => 'user_home_page_preference',
'value' => '3',
'userid' => $adminuser->id,
]
];
$result = core_user_external::set_user_preferences($preferences);
$result = \external_api::clean_returnvalue(core_user_external::set_user_preferences_returns(), $result);
$this->assertCount(1, $result['warnings']);
$this->assertCount(0, $result['saved']);
// Verify no change to the preference, checking from DB to avoid cache.
$this->assertEquals(null, $DB->get_field('user_preferences', 'value',
['userid' => $adminuser->id, 'name' => 'user_home_page_preference']));
}
}