From e878066cac83971e7f416c6d8f48e3b228f3f54e Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 18 Sep 2024 13:58:19 +0200 Subject: [PATCH] deprecate the TransportFactoryTestCase --- UPGRADE-7.2.md | 8 ++ .../Transport/SesTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Amazon/composer.json | 2 +- .../Transport/AzureTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Azure/composer.json | 2 +- .../Transport/BrevoTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Brevo/composer.json | 2 +- .../Transport/GmailTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Google/composer.json | 2 +- .../InfobipApiTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Infobip/composer.json | 2 +- .../MailPaceTransportFactoryTest.php | 7 +- .../Mailer/Bridge/MailPace/composer.json | 2 +- .../MandrillTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Mailchimp/composer.json | 2 +- .../MailerSendTransportFactoryTest.php | 7 +- .../Mailer/Bridge/MailerSend/composer.json | 2 +- .../Transport/MailgunTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Mailgun/composer.json | 2 +- .../Transport/MailjetTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Mailjet/composer.json | 2 +- .../MailomatTransportFactoryTest.php | 7 +- .../MailtrapTransportFactoryTest.php | 7 +- .../Transport/PostalTransportFactoryTest.php | 11 ++- .../PostmarkTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Postmark/composer.json | 2 +- .../Transport/ResendTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Resend/composer.json | 2 +- .../ScalewayTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Scaleway/composer.json | 2 +- .../SendgridTransportFactoryTest.php | 7 +- .../Mailer/Bridge/Sendgrid/composer.json | 2 +- .../Transport/SweegoTransportFactoryTest.php | 7 +- src/Symfony/Component/Mailer/CHANGELOG.md | 5 ++ .../Test/AbstractTransportFactoryTestCase.php | 83 +++++++++++++++++++ .../Mailer/Test/IncompleteDsnTestTrait.php | 36 ++++++++ .../Mailer/Test/TransportFactoryTestCase.php | 78 +---------------- .../Transport/NullTransportFactoryTest.php | 9 +- .../SendmailTransportFactoryTest.php | 4 +- .../Smtp/EsmtpTransportFactoryTest.php | 9 +- .../Transport/Smtp/EsmtpTransportFactory.php | 5 ++ 41 files changed, 263 insertions(+), 132 deletions(-) create mode 100644 src/Symfony/Component/Mailer/Test/AbstractTransportFactoryTestCase.php create mode 100644 src/Symfony/Component/Mailer/Test/IncompleteDsnTestTrait.php diff --git a/UPGRADE-7.2.md b/UPGRADE-7.2.md index 7c0c8064f4381..d81cab5ac96b7 100644 --- a/UPGRADE-7.2.md +++ b/UPGRADE-7.2.md @@ -47,6 +47,14 @@ Ldap * Add methods for `saslBind()` and `whoami()` to `ConnectionInterface` and `LdapInterface` +Mailer +------ + +* Deprecate `TransportFactoryTestCase`, extend `AbstractTransportFactoryTestCase` instead + + The `testIncompleteDsnException()` test is no longer provided by default. If you make use of it by implementing the `incompleteDsnProvider()` data providers, + you now need to use the `IncompleteDsnTestTrait`. + Messenger --------- diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesTransportFactoryTest.php index 4452c9c571fe1..b529c3c934016 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesTransportFactoryTest.php @@ -19,12 +19,15 @@ use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesHttpAsyncAwsTransport; use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesSmtpTransport; use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class SesTransportFactoryTest extends TransportFactoryTestCase +class SesTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new SesTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/composer.json b/src/Symfony/Component/Mailer/Bridge/Amazon/composer.json index 9002e0e0355d9..bfa2af6f3cbb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/composer.json @@ -18,7 +18,7 @@ "require": { "php": ">=8.2", "async-aws/ses": "^1.3", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/Azure/Tests/Transport/AzureTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Azure/Tests/Transport/AzureTransportFactoryTest.php index 4250ed6adfac6..00da04e7b9ed0 100644 --- a/src/Symfony/Component/Mailer/Bridge/Azure/Tests/Transport/AzureTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Azure/Tests/Transport/AzureTransportFactoryTest.php @@ -15,12 +15,15 @@ use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\Mailer\Bridge\Azure\Transport\AzureApiTransport; use Symfony\Component\Mailer\Bridge\Azure\Transport\AzureTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class AzureTransportFactoryTest extends TransportFactoryTestCase +class AzureTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new AzureTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Azure/composer.json b/src/Symfony/Component/Mailer/Bridge/Azure/composer.json index 1adb82dfd5cbe..c8396c21913e0 100644 --- a/src/Symfony/Component/Mailer/Bridge/Azure/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Azure/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/Brevo/Tests/Transport/BrevoTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Brevo/Tests/Transport/BrevoTransportFactoryTest.php index 0d0f00e0a804c..6fb762680910d 100644 --- a/src/Symfony/Component/Mailer/Bridge/Brevo/Tests/Transport/BrevoTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Brevo/Tests/Transport/BrevoTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Brevo\Transport\BrevoApiTransport; use Symfony\Component\Mailer\Bridge\Brevo\Transport\BrevoSmtpTransport; use Symfony\Component\Mailer\Bridge\Brevo\Transport\BrevoTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class BrevoTransportFactoryTest extends TransportFactoryTestCase +class BrevoTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new BrevoTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Brevo/composer.json b/src/Symfony/Component/Mailer/Bridge/Brevo/composer.json index 85bd88a462cca..441dada9ef97d 100644 --- a/src/Symfony/Component/Mailer/Bridge/Brevo/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Brevo/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.1", - "symfony/mailer": "^5.4.21|^6.2.7|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.3|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Google/Tests/Transport/GmailTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Google/Tests/Transport/GmailTransportFactoryTest.php index f8e58d393eddf..63553431f3d48 100644 --- a/src/Symfony/Component/Mailer/Bridge/Google/Tests/Transport/GmailTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Google/Tests/Transport/GmailTransportFactoryTest.php @@ -15,12 +15,15 @@ use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\Mailer\Bridge\Google\Transport\GmailSmtpTransport; use Symfony\Component\Mailer\Bridge\Google\Transport\GmailTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class GmailTransportFactoryTest extends TransportFactoryTestCase +class GmailTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new GmailTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Google/composer.json b/src/Symfony/Component/Mailer/Bridge/Google/composer.json index bb7047abf768a..13ba43762d942 100644 --- a/src/Symfony/Component/Mailer/Bridge/Google/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Google/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/Infobip/Tests/Transport/InfobipApiTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Infobip/Tests/Transport/InfobipApiTransportFactoryTest.php index f29ada5af97c2..83bd17d1e2e38 100644 --- a/src/Symfony/Component/Mailer/Bridge/Infobip/Tests/Transport/InfobipApiTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Infobip/Tests/Transport/InfobipApiTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Infobip\Transport\InfobipApiTransport; use Symfony\Component\Mailer\Bridge\Infobip\Transport\InfobipSmtpTransport; use Symfony\Component\Mailer\Bridge\Infobip\Transport\InfobipTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class InfobipApiTransportFactoryTest extends TransportFactoryTestCase +class InfobipApiTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new InfobipTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Infobip/composer.json b/src/Symfony/Component/Mailer/Bridge/Infobip/composer.json index b6f07b53d58ee..e15a7a3d17f4a 100644 --- a/src/Symfony/Component/Mailer/Bridge/Infobip/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Infobip/composer.json @@ -21,7 +21,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0", + "symfony/mailer": "^7.2", "symfony/mime": "^6.4|^7.0" }, "require-dev": { diff --git a/src/Symfony/Component/Mailer/Bridge/MailPace/Tests/Transport/MailPaceTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/MailPace/Tests/Transport/MailPaceTransportFactoryTest.php index 6baf5a33b2197..7535331a8a6d3 100644 --- a/src/Symfony/Component/Mailer/Bridge/MailPace/Tests/Transport/MailPaceTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/MailPace/Tests/Transport/MailPaceTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\MailPace\Transport\MailPaceApiTransport; use Symfony\Component\Mailer\Bridge\MailPace\Transport\MailPaceSmtpTransport; use Symfony\Component\Mailer\Bridge\MailPace\Transport\MailPaceTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -final class MailPaceTransportFactoryTest extends TransportFactoryTestCase +final class MailPaceTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailPaceTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/MailPace/composer.json b/src/Symfony/Component/Mailer/Bridge/MailPace/composer.json index 018f669aa83f3..9e962e28fc17f 100644 --- a/src/Symfony/Component/Mailer/Bridge/MailPace/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/MailPace/composer.json @@ -22,7 +22,7 @@ "require": { "php": ">=8.2", "psr/event-dispatcher": "^1", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillTransportFactoryTest.php index 78ca4e3acd25f..c84fa98809c03 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/Tests/Transport/MandrillTransportFactoryTest.php @@ -17,12 +17,15 @@ use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillHttpTransport; use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillSmtpTransport; use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MandrillTransportFactoryTest extends TransportFactoryTestCase +class MandrillTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MandrillTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/composer.json b/src/Symfony/Component/Mailer/Bridge/Mailchimp/composer.json index f104418ba3bd3..5f51051650c99 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/MailerSend/Tests/Transport/MailerSendTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/MailerSend/Tests/Transport/MailerSendTransportFactoryTest.php index 604bc42f786a9..56fbdd3ad0e9a 100644 --- a/src/Symfony/Component/Mailer/Bridge/MailerSend/Tests/Transport/MailerSendTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/MailerSend/Tests/Transport/MailerSendTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\MailerSend\Transport\MailerSendApiTransport; use Symfony\Component\Mailer\Bridge\MailerSend\Transport\MailerSendSmtpTransport; use Symfony\Component\Mailer\Bridge\MailerSend\Transport\MailerSendTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MailerSendTransportFactoryTest extends TransportFactoryTestCase +class MailerSendTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailerSendTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/MailerSend/composer.json b/src/Symfony/Component/Mailer/Bridge/MailerSend/composer.json index 4a9b3946f2723..96357327da187 100644 --- a/src/Symfony/Component/Mailer/Bridge/MailerSend/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/MailerSend/composer.json @@ -21,7 +21,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunTransportFactoryTest.php index a88f1e153a8ff..9f26f46268b93 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/Tests/Transport/MailgunTransportFactoryTest.php @@ -17,12 +17,15 @@ use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunHttpTransport; use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunSmtpTransport; use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MailgunTransportFactoryTest extends TransportFactoryTestCase +class MailgunTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailgunTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/composer.json b/src/Symfony/Component/Mailer/Bridge/Mailgun/composer.json index bdc82be4aa8b6..3a5a475e3e44b 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetTransportFactoryTest.php index 224ef14eef907..0f05d14c6be52 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetApiTransport; use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetSmtpTransport; use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MailjetTransportFactoryTest extends TransportFactoryTestCase +class MailjetTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailjetTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/composer.json b/src/Symfony/Component/Mailer/Bridge/Mailjet/composer.json index 686c60a023bb9..2ef1d8a5842cb 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailjet/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Mailjet/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Mailomat/Tests/Transport/MailomatTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Mailomat/Tests/Transport/MailomatTransportFactoryTest.php index 8bb1e3dff0fee..bf86db414615a 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailomat/Tests/Transport/MailomatTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailomat/Tests/Transport/MailomatTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Mailomat\Transport\MailomatApiTransport; use Symfony\Component\Mailer\Bridge\Mailomat\Transport\MailomatSmtpTransport; use Symfony\Component\Mailer\Bridge\Mailomat\Transport\MailomatTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MailomatTransportFactoryTest extends TransportFactoryTestCase +class MailomatTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailomatTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Mailtrap/Tests/Transport/MailtrapTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Mailtrap/Tests/Transport/MailtrapTransportFactoryTest.php index df824e150d6c9..9b3c71d351e04 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailtrap/Tests/Transport/MailtrapTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Mailtrap/Tests/Transport/MailtrapTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Mailtrap\Transport\MailtrapApiTransport; use Symfony\Component\Mailer\Bridge\Mailtrap\Transport\MailtrapSmtpTransport; use Symfony\Component\Mailer\Bridge\Mailtrap\Transport\MailtrapTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class MailtrapTransportFactoryTest extends TransportFactoryTestCase +class MailtrapTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new MailtrapTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Postal/Tests/Transport/PostalTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Postal/Tests/Transport/PostalTransportFactoryTest.php index 87f181a5e2ef9..04c918cec9a43 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postal/Tests/Transport/PostalTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Postal/Tests/Transport/PostalTransportFactoryTest.php @@ -15,12 +15,15 @@ use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\Mailer\Bridge\Postal\Transport\PostalApiTransport; use Symfony\Component\Mailer\Bridge\Postal\Transport\PostalTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class PostalTransportFactoryTest extends TransportFactoryTestCase +class PostalTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new PostalTransportFactory(null, new MockHttpClient(), new NullLogger()); @@ -45,12 +48,12 @@ public static function createProvider(): iterable yield [ new Dsn('postal+api', 'postal.localhost', null, self::PASSWORD), - (new PostalApiTransport(self::PASSWORD, 'postal.localhost', new MockHttpClient(), null, $logger)), + new PostalApiTransport(self::PASSWORD, 'postal.localhost', new MockHttpClient(), null, $logger), ]; yield [ new Dsn('postal', 'postal.localhost', null, self::PASSWORD), - (new PostalApiTransport(self::PASSWORD, 'postal.localhost', new MockHttpClient(), null, $logger)), + new PostalApiTransport(self::PASSWORD, 'postal.localhost', new MockHttpClient(), null, $logger), ]; } diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkTransportFactoryTest.php index 33a6b66ab1d89..639494150f765 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Postmark/Tests/Transport/PostmarkTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkApiTransport; use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkSmtpTransport; use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class PostmarkTransportFactoryTest extends TransportFactoryTestCase +class PostmarkTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new PostmarkTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/composer.json b/src/Symfony/Component/Mailer/Bridge/Postmark/composer.json index ee80478b967d6..0451fec7f96ce 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Postmark/composer.json @@ -18,7 +18,7 @@ "require": { "php": ">=8.2", "psr/event-dispatcher": "^1", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Resend/Tests/Transport/ResendTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Resend/Tests/Transport/ResendTransportFactoryTest.php index d87cdc3a76e7c..6801781f5b873 100644 --- a/src/Symfony/Component/Mailer/Bridge/Resend/Tests/Transport/ResendTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Resend/Tests/Transport/ResendTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Resend\Transport\ResendApiTransport; use Symfony\Component\Mailer\Bridge\Resend\Transport\ResendSmtpTransport; use Symfony\Component\Mailer\Bridge\Resend\Transport\ResendTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class ResendTransportFactoryTest extends TransportFactoryTestCase +class ResendTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new ResendTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Resend/composer.json b/src/Symfony/Component/Mailer/Bridge/Resend/composer.json index b87f7a3edfce7..0fe9a6f79df3c 100644 --- a/src/Symfony/Component/Mailer/Bridge/Resend/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Resend/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.1", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Scaleway/Tests/Transport/ScalewayTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Scaleway/Tests/Transport/ScalewayTransportFactoryTest.php index c7c691a7be24a..dccab77640b4d 100644 --- a/src/Symfony/Component/Mailer/Bridge/Scaleway/Tests/Transport/ScalewayTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Scaleway/Tests/Transport/ScalewayTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Scaleway\Transport\ScalewayApiTransport; use Symfony\Component\Mailer\Bridge\Scaleway\Transport\ScalewaySmtpTransport; use Symfony\Component\Mailer\Bridge\Scaleway\Transport\ScalewayTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class ScalewayTransportFactoryTest extends TransportFactoryTestCase +class ScalewayTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new ScalewayTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Scaleway/composer.json b/src/Symfony/Component/Mailer/Bridge/Scaleway/composer.json index 0c90bccda8fa9..1ad65e470f641 100644 --- a/src/Symfony/Component/Mailer/Bridge/Scaleway/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Scaleway/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.1", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0" diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridTransportFactoryTest.php index 433e905add6c5..c02811f566acd 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridApiTransport; use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridSmtpTransport; use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class SendgridTransportFactoryTest extends TransportFactoryTestCase +class SendgridTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new SendgridTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/composer.json b/src/Symfony/Component/Mailer/Bridge/Sendgrid/composer.json index f8982a448063f..b88cd130fd5fc 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/composer.json +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=8.2", - "symfony/mailer": "^6.4|^7.0" + "symfony/mailer": "^7.2" }, "require-dev": { "symfony/http-client": "^6.4|^7.0", diff --git a/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoTransportFactoryTest.php b/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoTransportFactoryTest.php index 7c2d75a441f9b..ad4cf6714d400 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sweego/Tests/Transport/SweegoTransportFactoryTest.php @@ -16,12 +16,15 @@ use Symfony\Component\Mailer\Bridge\Sweego\Transport\SweegoApiTransport; use Symfony\Component\Mailer\Bridge\Sweego\Transport\SweegoSmtpTransport; use Symfony\Component\Mailer\Bridge\Sweego\Transport\SweegoTransportFactory; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; +use Symfony\Component\Mailer\Test\IncompleteDsnTestTrait; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class SweegoTransportFactoryTest extends TransportFactoryTestCase +class SweegoTransportFactoryTest extends AbstractTransportFactoryTestCase { + use IncompleteDsnTestTrait; + public function getFactory(): TransportFactoryInterface { return new SweegoTransportFactory(null, new MockHttpClient(), new NullLogger()); diff --git a/src/Symfony/Component/Mailer/CHANGELOG.md b/src/Symfony/Component/Mailer/CHANGELOG.md index 01fb57558f366..e77263dd27417 100644 --- a/src/Symfony/Component/Mailer/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/CHANGELOG.md @@ -4,6 +4,11 @@ CHANGELOG 7.2 --- + * Deprecate `TransportFactoryTestCase`, extend `AbstractTransportFactoryTestCase` instead + + The `testIncompleteDsnException()` test is no longer provided by default. If you make use of it by implementing the `incompleteDsnProvider()` data providers, + you now need to use the `IncompleteDsnTestTrait`. + * Make `TransportFactoryTestCase` compatible with PHPUnit 10+ 7.1 diff --git a/src/Symfony/Component/Mailer/Test/AbstractTransportFactoryTestCase.php b/src/Symfony/Component/Mailer/Test/AbstractTransportFactoryTestCase.php new file mode 100644 index 0000000000000..c378948698d87 --- /dev/null +++ b/src/Symfony/Component/Mailer/Test/AbstractTransportFactoryTestCase.php @@ -0,0 +1,83 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Mailer\Test; + +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\TestCase; +use Symfony\Component\Mailer\Exception\UnsupportedSchemeException; +use Symfony\Component\Mailer\Transport\Dsn; +use Symfony\Component\Mailer\Transport\TransportFactoryInterface; +use Symfony\Component\Mailer\Transport\TransportInterface; + +abstract class AbstractTransportFactoryTestCase extends TestCase +{ + protected const USER = 'u$er'; + protected const PASSWORD = 'pa$s'; + + abstract public function getFactory(): TransportFactoryInterface; + + /** + * @psalm-return iterable + */ + abstract public static function supportsProvider(): iterable; + + /** + * @psalm-return iterable + */ + abstract public static function createProvider(): iterable; + + /** + * @psalm-return iterable + */ + abstract public static function unsupportedSchemeProvider(): iterable; + + /** + * @dataProvider supportsProvider + */ + #[DataProvider('supportsProvider')] + public function testSupports(Dsn $dsn, bool $supports) + { + $factory = $this->getFactory(); + + $this->assertSame($supports, $factory->supports($dsn)); + } + + /** + * @dataProvider createProvider + */ + #[DataProvider('createProvider')] + public function testCreate(Dsn $dsn, TransportInterface $transport) + { + $factory = $this->getFactory(); + + $this->assertEquals($transport, $factory->create($dsn)); + if (str_contains('smtp', $dsn->getScheme())) { + $this->assertStringMatchesFormat($dsn->getScheme().'://%S'.$dsn->getHost().'%S', (string) $transport); + } + } + + /** + * @dataProvider unsupportedSchemeProvider + */ + #[DataProvider('unsupportedSchemeProvider')] + public function testUnsupportedSchemeException(Dsn $dsn, ?string $message = null) + { + $factory = $this->getFactory(); + + $this->expectException(UnsupportedSchemeException::class); + if (null !== $message) { + $this->expectExceptionMessage($message); + } + + $factory->create($dsn); + } +} diff --git a/src/Symfony/Component/Mailer/Test/IncompleteDsnTestTrait.php b/src/Symfony/Component/Mailer/Test/IncompleteDsnTestTrait.php new file mode 100644 index 0000000000000..fbf322af85662 --- /dev/null +++ b/src/Symfony/Component/Mailer/Test/IncompleteDsnTestTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Mailer\Test; + +use PHPUnit\Framework\Attributes\DataProvider; +use Symfony\Component\Mailer\Exception\IncompleteDsnException; +use Symfony\Component\Mailer\Transport\Dsn; + +trait IncompleteDsnTestTrait +{ + /** + * @psalm-return iterable + */ + abstract public static function incompleteDsnProvider(): iterable; + + /** + * @dataProvider incompleteDsnProvider + */ + #[DataProvider('incompleteDsnProvider')] + public function testIncompleteDsnException(Dsn $dsn) + { + $factory = $this->getFactory(); + + $this->expectException(IncompleteDsnException::class); + $factory->create($dsn); + } +} diff --git a/src/Symfony/Component/Mailer/Test/TransportFactoryTestCase.php b/src/Symfony/Component/Mailer/Test/TransportFactoryTestCase.php index d39839f267dec..782bba37c44db 100644 --- a/src/Symfony/Component/Mailer/Test/TransportFactoryTestCase.php +++ b/src/Symfony/Component/Mailer/Test/TransportFactoryTestCase.php @@ -11,14 +11,8 @@ namespace Symfony\Component\Mailer\Test; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; -use Symfony\Component\Mailer\Exception\IncompleteDsnException; -use Symfony\Component\Mailer\Exception\UnsupportedSchemeException; use Symfony\Component\Mailer\Transport\Dsn; -use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -use Symfony\Component\Mailer\Transport\TransportInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -26,28 +20,17 @@ * A test case to ease testing Transport Factory. * * @author Konstantin Myakshin + * + * @deprecated since Symfony 7.2, use AbstractTransportFactoryTestCase instead */ -abstract class TransportFactoryTestCase extends TestCase +abstract class TransportFactoryTestCase extends AbstractTransportFactoryTestCase { - protected const USER = 'u$er'; - protected const PASSWORD = 'pa$s'; + use IncompleteDsnTestTrait; protected EventDispatcherInterface $dispatcher; protected HttpClientInterface $client; protected LoggerInterface $logger; - abstract public function getFactory(): TransportFactoryInterface; - - /** - * @psalm-return iterable - */ - abstract public static function supportsProvider(): iterable; - - /** - * @psalm-return iterable - */ - abstract public static function createProvider(): iterable; - /** * @psalm-return iterable */ @@ -64,59 +47,6 @@ public static function incompleteDsnProvider(): iterable return []; } - /** - * @dataProvider supportsProvider - */ - #[DataProvider('supportsProvider')] - public function testSupports(Dsn $dsn, bool $supports) - { - $factory = $this->getFactory(); - - $this->assertSame($supports, $factory->supports($dsn)); - } - - /** - * @dataProvider createProvider - */ - #[DataProvider('createProvider')] - public function testCreate(Dsn $dsn, TransportInterface $transport) - { - $factory = $this->getFactory(); - - $this->assertEquals($transport, $factory->create($dsn)); - if (str_contains('smtp', $dsn->getScheme())) { - $this->assertStringMatchesFormat($dsn->getScheme().'://%S'.$dsn->getHost().'%S', (string) $transport); - } - } - - /** - * @dataProvider unsupportedSchemeProvider - */ - #[DataProvider('unsupportedSchemeProvider')] - public function testUnsupportedSchemeException(Dsn $dsn, ?string $message = null) - { - $factory = $this->getFactory(); - - $this->expectException(UnsupportedSchemeException::class); - if (null !== $message) { - $this->expectExceptionMessage($message); - } - - $factory->create($dsn); - } - - /** - * @dataProvider incompleteDsnProvider - */ - #[DataProvider('incompleteDsnProvider')] - public function testIncompleteDsnException(Dsn $dsn) - { - $factory = $this->getFactory(); - - $this->expectException(IncompleteDsnException::class); - $factory->create($dsn); - } - protected function getDispatcher(): EventDispatcherInterface { return $this->dispatcher ??= $this->createMock(EventDispatcherInterface::class); diff --git a/src/Symfony/Component/Mailer/Tests/Transport/NullTransportFactoryTest.php b/src/Symfony/Component/Mailer/Tests/Transport/NullTransportFactoryTest.php index b28935a75d4f5..e7383737c5766 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/NullTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/NullTransportFactoryTest.php @@ -13,13 +13,13 @@ use Psr\Log\NullLogger; use Symfony\Component\HttpClient\MockHttpClient; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\NullTransport; use Symfony\Component\Mailer\Transport\NullTransportFactory; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class NullTransportFactoryTest extends TransportFactoryTestCase +class NullTransportFactoryTest extends AbstractTransportFactoryTestCase { public function getFactory(): TransportFactoryInterface { @@ -41,4 +41,9 @@ public static function createProvider(): iterable new NullTransport(null, new NullLogger()), ]; } + + public static function unsupportedSchemeProvider(): iterable + { + yield [new Dsn('smtp', 'localhost')]; + } } diff --git a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportFactoryTest.php b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportFactoryTest.php index a3d08f5933359..3ef9cc9f5dae5 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportFactoryTest.php @@ -13,13 +13,13 @@ use Psr\Log\NullLogger; use Symfony\Component\HttpClient\MockHttpClient; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\SendmailTransport; use Symfony\Component\Mailer\Transport\SendmailTransportFactory; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class SendmailTransportFactoryTest extends TransportFactoryTestCase +class SendmailTransportFactoryTest extends AbstractTransportFactoryTestCase { public function getFactory(): TransportFactoryInterface { diff --git a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php index 442583a7af179..b21e4ae0776df 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/EsmtpTransportFactoryTest.php @@ -13,14 +13,14 @@ use Psr\Log\NullLogger; use Symfony\Component\HttpClient\MockHttpClient; -use Symfony\Component\Mailer\Test\TransportFactoryTestCase; +use Symfony\Component\Mailer\Test\AbstractTransportFactoryTestCase; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport; use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransportFactory; use Symfony\Component\Mailer\Transport\Smtp\Stream\SocketStream; use Symfony\Component\Mailer\Transport\TransportFactoryInterface; -class EsmtpTransportFactoryTest extends TransportFactoryTestCase +class EsmtpTransportFactoryTest extends AbstractTransportFactoryTestCase { public function getFactory(): TransportFactoryInterface { @@ -181,4 +181,9 @@ public static function createProvider(): iterable $transport, ]; } + + public static function unsupportedSchemeProvider(): iterable + { + yield [new Dsn('null', '')]; + } } diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php index 9df0b957451be..492e78a110455 100644 --- a/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php +++ b/src/Symfony/Component/Mailer/Transport/Smtp/EsmtpTransportFactory.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Mailer\Transport\Smtp; +use Symfony\Component\Mailer\Exception\UnsupportedSchemeException; use Symfony\Component\Mailer\Transport\AbstractTransportFactory; use Symfony\Component\Mailer\Transport\Dsn; use Symfony\Component\Mailer\Transport\Smtp\Stream\SocketStream; @@ -23,6 +24,10 @@ final class EsmtpTransportFactory extends AbstractTransportFactory { public function create(Dsn $dsn): TransportInterface { + if (!\in_array($dsn->getScheme(), $this->getSupportedSchemes(), true)) { + throw new UnsupportedSchemeException($dsn, 'smtp', $this->getSupportedSchemes()); + } + $autoTls = '' === $dsn->getOption('auto_tls') || filter_var($dsn->getOption('auto_tls', true), \FILTER_VALIDATE_BOOL); $tls = 'smtps' === $dsn->getScheme() ? true : ($autoTls ? null : false); $port = $dsn->getPort(0);