. /** * Legacy management surface tests. * * @package local_webhooks * @copyright 2026 "Valentin Popov" * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace local_webhooks; #[\PHPUnit\Framework\Attributes\CoversNothing] /** * Legacy management surface tests. * * @coversNothing */ final class legacy_ui_test extends \advanced_testcase { /** * Legacy management is unavailable without leaving dead links or write helpers. */ public function test_legacy_management_is_retired(): void { global $CFG; $this->resetAfterTest(); $user = $this->getDataGenerator()->create_user(); $this->setUser($user); foreach (['index.php', 'editservice.php', 'restorebackup.php'] as $entrypoint) { try { require($CFG->dirroot . '/local/webhooks/' . $entrypoint); $this->fail($entrypoint . ' allowed a user without site configuration capability.'); } catch (\required_capability_exception $exception) { $this->assertSame('nopermissions', $exception->errorcode); } } $this->setAdminUser(); foreach (['index.php', 'editservice.php', 'restorebackup.php'] as $entrypoint) { try { require($CFG->dirroot . '/local/webhooks/' . $entrypoint); $this->fail($entrypoint . ' did not fail closed.'); } catch (\moodle_exception $exception) { $this->assertSame('legacyuidisabled', $exception->errorcode); } } require_once($CFG->libdir . '/adminlib.php'); $this->assertNull(admin_get_root(true)->locate('local_webhooks')); foreach (['classes/service_edit_form.php', 'classes/service_form.php', 'locallib.php'] as $file) { $this->assertFileDoesNotExist($CFG->dirroot . '/local/webhooks/' . $file); } require_once($CFG->dirroot . '/local/webhooks/lib.php'); $this->assertTrue(function_exists('local_webhooks_get_event_choices')); $helpers = [ 'local_webhooks_get_list_records', 'local_webhooks_get_record', 'local_webhooks_remove_list_records', 'local_webhooks_remove_record', 'local_webhooks_update_record', 'local_webhooks_create_backup', 'local_webhooks_restore_backup', 'local_webhooks_archiving_data', 'local_webhooks_unarchive_data', ]; foreach ($helpers as $helper) { $this->assertFalse(function_exists($helper), $helper . ' is still callable.'); } $context = \context_system::instance(); $events = [ event\backup_performed::create(['context' => $context, 'objectid' => 0]), event\backup_restored::create(['context' => $context, 'objectid' => 0]), event\response_answer::create([ 'context' => $context, 'objectid' => 1, 'other' => ['status' => 'disabled'], ]), event\service_added::create(['context' => $context, 'objectid' => 1]), event\service_deleted::create(['context' => $context, 'objectid' => 1]), event\service_updated::create(['context' => $context, 'objectid' => 1]), ]; foreach ($events as $event) { $this->assertNull($event->get_url()); } } }