Working state

This commit is contained in:
julien
2026-03-16 09:25:44 +01:00
parent b5a728e669
commit fd3f608059
24 changed files with 249 additions and 502 deletions

View File

@@ -6,17 +6,17 @@ namespace Tests\Shared;
use App\Shared\Mail\MailService;
use PHPMailer\PHPMailer\PHPMailer;
use PHPUnit\Framework\TestCase;
use ReflectionMethod;
use Slim\Views\Twig;
use Twig\Loader\ArrayLoader;
#[\PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations]
final class MailServiceTest extends TestCase
{
public function testCreateMailerUsesSslConfiguration(): void
{
$service = $this->createService('ssl', 465);
/** @var PHPMailer $mailer */
$service = $this->makeService('ssl', 465);
$mailer = $this->invokeCreateMailer($service);
self::assertSame('smtp', $mailer->Mailer);
@@ -27,25 +27,23 @@ final class MailServiceTest extends TestCase
self::assertSame(PHPMailer::ENCRYPTION_SMTPS, $mailer->SMTPSecure);
self::assertSame(465, $mailer->Port);
self::assertSame(PHPMailer::CHARSET_UTF8, $mailer->CharSet);
self::assertSame('noreply@example.test', $mailer->From);
self::assertSame('no-reply@example.test', $mailer->From);
self::assertSame('Slim Blog', $mailer->FromName);
}
public function testCreateMailerUsesStartTlsWhenEncryptionIsNotSsl(): void
{
$service = $this->createService('tls', 587);
/** @var PHPMailer $mailer */
$service = $this->makeService('tls', 587);
$mailer = $this->invokeCreateMailer($service);
self::assertSame(PHPMailer::ENCRYPTION_STARTTLS, $mailer->SMTPSecure);
self::assertSame(587, $mailer->Port);
}
private function createService(string $encryption, int $port): MailService
private function makeService(string $encryption, int $port): MailService
{
$twig = new Twig(new ArrayLoader([
'emails/test.twig' => '<p>Hello {{ name }}</p>',
'emails/test.twig' => '<p>Bonjour {{ name }}</p>',
]));
return new MailService(
@@ -55,16 +53,19 @@ final class MailServiceTest extends TestCase
'mailer-user',
'mailer-pass',
$encryption,
'noreply@example.test',
'no-reply@example.test',
'Slim Blog',
);
}
private function invokeCreateMailer(MailService $service): mixed
private function invokeCreateMailer(MailService $service): PHPMailer
{
$method = new \ReflectionMethod($service, 'createMailer');
$method = new ReflectionMethod($service, 'createMailer');
$method->setAccessible(true);
return $method->invoke($service);
/** @var PHPMailer $mailer */
$mailer = $method->invoke($service);
return $mailer;
}
}