From 71d207ed9baddde8a9f38f565497d8c74ae300fd Mon Sep 17 00:00:00 2001 From: Rico Kritz <> Date: Fri, 22 May 2026 14:34:13 +0200 Subject: [PATCH] added tests for sending encrypted emails and ensure mailer and mime assertions can handle Message objects as well --- composer.json | 1 + config/routes.php | 4 ++ .../SendEncryptedEmailController.php | 25 +++++++++++++ src/Utils/Crypto.php | 37 +++++++++++++++++++ src/Utils/Mailer.php | 25 ++++++++++++- tests/Functional/IssuesCest.php | 14 +++++++ 6 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 src/Controller/SendEncryptedEmailController.php create mode 100644 src/Utils/Crypto.php diff --git a/composer.json b/composer.json index c2087fa..d1353f9 100644 --- a/composer.json +++ b/composer.json @@ -31,6 +31,7 @@ "symfony/yaml": "5.4.*" }, "require-dev": { + "ext-openssl": "*", "codeception/codeception": "^5.3", "codeception/module-asserts": "^3.2", "codeception/module-doctrine": "^3.3", diff --git a/config/routes.php b/config/routes.php index 0446a1a..3e4bd8a 100644 --- a/config/routes.php +++ b/config/routes.php @@ -88,4 +88,8 @@ $routes->add('send_email', '/send-email') ->controller(App\Controller\SendEmailController::class) ->methods(['GET']); + + $routes->add('send_encrypted_email', '/send-encrypted-email') + ->controller(App\Controller\SendEncryptedEmailController::class) + ->methods(['GET']); }; diff --git a/src/Controller/SendEncryptedEmailController.php b/src/Controller/SendEncryptedEmailController.php new file mode 100644 index 0000000..032b912 --- /dev/null +++ b/src/Controller/SendEncryptedEmailController.php @@ -0,0 +1,25 @@ +mailer->sendEncryptedEmail((new User())->setEmail('jane_doe@example.com')); + + return $this->json(['message' => 'Encrypted email sent successfully']); + } +} diff --git a/src/Utils/Crypto.php b/src/Utils/Crypto.php new file mode 100644 index 0000000..1c7683d --- /dev/null +++ b/src/Utils/Crypto.php @@ -0,0 +1,37 @@ +crypto->generateSslCertificate()); + + $email = (new Email()) + ->from(new Address('jeison_doe@gmail.com', 'No Reply')) + ->to(new Address($user->getEmail())) + ->subject('Encrypted email') + ->text('Encrypted content'); + + $message = $encrypter->encrypt($email); + $this->mailer->send($message); + + return $message; + } } diff --git a/tests/Functional/IssuesCest.php b/tests/Functional/IssuesCest.php index 433b991..97908cb 100644 --- a/tests/Functional/IssuesCest.php +++ b/tests/Functional/IssuesCest.php @@ -7,6 +7,7 @@ use App\Entity\User; use App\Tests\Support\FunctionalTester; use Doctrine\DBAL\Connection; +use Symfony\Component\Mime\Message; final class IssuesCest { @@ -53,4 +54,17 @@ public function runSymfonyConsoleCommandIgnoresSpecificOptions(FunctionalTester $numRecords = $I->grabNumRecords(User::class); $I->assertSame(1, $numRecords); } + + /** + * @see https://github.com/Codeception/module-symfony/pull/232 + */ + public function assertEncryptedEmailTests(FunctionalTester $I) + { + $I->amOnPage('/send-encrypted-email'); + $I->seeEmailIsSent(1); + $I->assertEmailAddressContains('To', 'jane_doe@example.com'); + $I->assertEmailHeaderSame('To', 'jane_doe@example.com'); + $I->assertEmailHeaderSame('Subject', 'Encrypted email'); + $I->assertInstanceOf(Message::class, $I->grabLastSentEmail()); + } }