░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/moodle/public/privacy/tests/privacy
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: provider_advanced_test.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace core_privacy\privacy; use core_privacy\manager; /** * Slow unit tests for all Privacy Providers that require database modifications. * * @package core_privacy * @copyright 2018 Andrew Nicols <andrew@nicols.co.uk> * @copyright 2025 Petr Skoda * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ final class provider_advanced_test extends \advanced_testcase { /** * Returns a list of frankenstyle names of core components (plugins and subsystems). * * @return array the array of frankenstyle component names with the relevant class name. */ public static function get_component_list(): array { $components = ['core' => [ 'component' => 'core', 'classname' => manager::get_provider_classname_for_component('core'), ]]; // Get all plugins. $plugintypes = \core_component::get_plugin_types(); foreach ($plugintypes as $plugintype => $typedir) { $plugins = \core_component::get_plugin_list($plugintype); foreach ($plugins as $pluginname => $plugindir) { $frankenstyle = $plugintype . '_' . $pluginname; $components[$frankenstyle] = [ 'component' => $frankenstyle, 'classname' => manager::get_provider_classname_for_component($frankenstyle), ]; } } // Get all subsystems. foreach (\core_component::get_core_subsystems() as $name => $path) { if (isset($path)) { $frankenstyle = 'core_' . $name; $components[$frankenstyle] = [ 'component' => $frankenstyle, 'classname' => manager::get_provider_classname_for_component($frankenstyle), ]; } } return $components; } /** * Ensure that providers do not throw an error when processing a deleted user. * * @group plugin_checks * @dataProvider is_user_data_provider * @coversNothing * @param string $component */ public function test_component_understands_deleted_users($component): void { $this->resetAfterTest(); // Create a user. $user = $this->getDataGenerator()->create_user(); // Delete the user and their context. delete_user($user); $usercontext = \context_user::instance($user->id); $usercontext->delete(); $contextlist = manager::component_class_callback($component, \core_privacy\local\request\core_user_data_provider::class, 'get_contexts_for_userid', [$user->id]); $this->assertInstanceOf(\core_privacy\local\request\contextlist::class, $contextlist); } /** * List of providers which implement the core_user_data_provider. * * @return array */ public static function is_user_data_provider(): array { return array_map( fn ($data) => ['component' => $data['component']], array_filter(self::get_component_list(), function($component): bool { return static::component_implements( $component['classname'], \core_privacy\local\request\core_user_data_provider::class ); }), ); } /** * Checks whether the component's provider class implements the specified interface, either directly or as a grandchild. * * @param string $providerclass The name of the class to test. * @param string $interface the name of the interface we want to check. * @return bool Whether the class implements the interface. */ protected static function component_implements($providerclass, $interface) { if (class_exists($providerclass) && interface_exists($interface)) { return is_subclass_of($providerclass, $interface); } return false; } }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 provider_advanced_test.php
PHP
4.6 KB
2026-02-11 01:44
EDIT
📄 provider_test.php
PHP
11.9 KB
2026-02-11 01:44
EDIT