createService('ssl', 465); /** @var PHPMailer $mailer */ $mailer = $this->invokeCreateMailer($service); self::assertSame('smtp', $mailer->Mailer); self::assertSame('smtp.example.test', $mailer->Host); self::assertTrue($mailer->SMTPAuth); self::assertSame('mailer-user', $mailer->Username); self::assertSame('mailer-pass', $mailer->Password); 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('Slim Blog', $mailer->FromName); } public function testCreateMailerUsesStartTlsWhenEncryptionIsNotSsl(): void { $service = $this->createService('tls', 587); /** @var PHPMailer $mailer */ $mailer = $this->invokeCreateMailer($service); self::assertSame(PHPMailer::ENCRYPTION_STARTTLS, $mailer->SMTPSecure); self::assertSame(587, $mailer->Port); } private function createService(string $encryption, int $port): MailService { $twig = new Twig(new ArrayLoader([ 'emails/test.twig' => '
Hello {{ name }}
', ])); return new MailService( $twig, 'smtp.example.test', $port, 'mailer-user', 'mailer-pass', $encryption, 'noreply@example.test', 'Slim Blog', ); } private function invokeCreateMailer(MailService $service): mixed { $method = new \ReflectionMethod($service, 'createMailer'); $method->setAccessible(true); return $method->invoke($service); } }