From 82eecc94750e50884c019b9afced2340b4f8e181 Mon Sep 17 00:00:00 2001 From: sam marshall Date: Wed, 7 May 2025 15:18:51 +0100 Subject: [PATCH] MDL-85400 PHPunit: Hard to test code that uses encryption This change stops the encryption code setting created key files to read-only during PHPunit runs, which means they will be safely deleted when the system resets after a test. --- lib/classes/encryption.php | 4 ++-- lib/tests/encryption_test.php | 17 ----------------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/lib/classes/encryption.php b/lib/classes/encryption.php index 891239a04b3..0b6b479e12d 100644 --- a/lib/classes/encryption.php +++ b/lib/classes/encryption.php @@ -61,8 +61,8 @@ class encryption { throw new \moodle_exception('encryption_keyalreadyexists', 'error'); } - // Don't make it read-only in Behat or it will fail to clear for future runs. - if (defined('BEHAT_SITE_RUNNING')) { + // Don't make it read-only in tests or it will fail to clear for future runs. + if (defined('BEHAT_SITE_RUNNING') || PHPUNIT_TEST) { $chmod = false; } diff --git a/lib/tests/encryption_test.php b/lib/tests/encryption_test.php index 4c4cc622703..933b161deb8 100644 --- a/lib/tests/encryption_test.php +++ b/lib/tests/encryption_test.php @@ -28,25 +28,8 @@ use advanced_testcase; */ final class encryption_test extends advanced_testcase { - /** - * Clear junk created by tests. - */ - protected function tearDown(): void { - global $CFG; - - $keyfile = encryption::get_key_file(encryption::METHOD_SODIUM); - if (file_exists($keyfile)) { - chmod($keyfile, 0700); - } - remove_dir($CFG->dataroot . '/secret'); - unset($CFG->nokeygeneration); - parent::tearDown(); - } - protected function setUp(): void { parent::setUp(); - $this->tearDown(); - require_once(__DIR__ . '/fixtures/testable_encryption.php'); }