From b9ba50fbb6b8da71ca5226dd22f6b35d8ca40f05 Mon Sep 17 00:00:00 2001 From: Tasio Date: Thu, 17 Jul 2025 15:56:17 +0200 Subject: [PATCH] MDL-86043 core: test for the task sending new users an email --- .../send_new_user_passwords_task_test.php | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 lib/tests/task/send_new_user_passwords_task_test.php diff --git a/lib/tests/task/send_new_user_passwords_task_test.php b/lib/tests/task/send_new_user_passwords_task_test.php new file mode 100644 index 00000000000..1fa19b8d0a9 --- /dev/null +++ b/lib/tests/task/send_new_user_passwords_task_test.php @@ -0,0 +1,79 @@ +. + +declare(strict_types=1); + +namespace core\task; + +/** + * File containing tests for send_new_user_passwords_task + * + * @package core + * @category test + * @covers \core\task\send_new_user_passwords_task + * @copyright 2025 Moodle Pty Ltd + * @author 2025 Tasio Bertomeu Gomez + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +final class send_new_user_passwords_task_test extends \advanced_testcase { + /** + * Validate the content of the email sent to new users + */ + public function test_send_new_user_password_task(): void { + global $DB; + $this->resetAfterTest(); + $this->setAdminUser(); + $user1 = self::getDataGenerator()->create_user([ + 'username' => 'student1', + 'firstname' => 'StudentA', + 'lastname' => 'One', + 'email' => 's1@example.com', + ]); + $user2 = self::getDataGenerator()->create_user([ + 'username' => 'student2', + 'firstname' => 'StudentB', + 'lastname' => 'One', + 'email' => 's2@example.com', + ]); + set_user_preference('create_password', 1, $user1); + set_user_preference('create_password', 1, $user2); + + $sink = $this->redirectEmails(); + $task = new \core\task\send_new_user_passwords_task(); + ob_start(); + $task->execute(); + ob_end_clean(); + $emails = $sink->get_messages(); + $sink->close(); + + // Email for the new users. + $emailonebody = quoted_printable_decode($emails[0]->body); + $this->assertStringContainsString("Hi StudentA,", $emailonebody); + $this->assertStringContainsString("An account has been created for you at 'PHPUnit test site'", $emailonebody); + $this->assertStringContainsString("username: student1", $emailonebody); + $this->assertStringContainsString('https://www.example.com/moodle/login/?lang=en', $emailonebody); + $this->assertStringContainsString('https://www.example.com/moodle/user/contactsitesupport.php', $emailonebody); + $this->assertStringContainsString('PHPUnit test site: New user account', $emails[0]->subject); + + $emailtwobody = quoted_printable_decode($emails[1]->body); + $this->assertStringContainsString("Hi StudentB,", $emailtwobody); + $this->assertStringContainsString("An account has been created for you at 'PHPUnit test site'", $emailtwobody); + $this->assertStringContainsString("username: student2", $emailtwobody); + $this->assertStringContainsString('https://www.example.com/moodle/login/?lang=en', $emailtwobody); + $this->assertStringContainsString('https://www.example.com/moodle/user/contactsitesupport.php', $emailtwobody); + $this->assertStringContainsString('PHPUnit test site: New user account', $emails[1]->subject); + } +}