bug #37849 [FrameworkBundle] Add missing mailer transports in xsd (l-vo)

This PR was merged into the 4.4 branch.

Discussion
----------

[FrameworkBundle] Add missing mailer transports in xsd

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

c21df9b50a [FrameworkBundle] Add missing mailer transports in xsd
This commit is contained in:
Fabien Potencier 2020-08-17 07:31:49 +02:00
commit 9d995bdd3b
8 changed files with 87 additions and 3 deletions

View File

@ -571,11 +571,16 @@
<xsd:complexType name="mailer">
<xsd:sequence>
<xsd:element name="transport" type="mailer_transport" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="envelope" type="mailer_envelope" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="dsn" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="mailer_transport" mixed="true">
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="mailer_envelope">
<xsd:sequence>
<xsd:element name="sender" type="xsd:string" minOccurs="0" maxOccurs="1" />

View File

@ -0,0 +1,15 @@
<?php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
return static function (ContainerConfigurator $container) {
$container->extension('framework', [
'mailer' => [
'dsn' => 'smtp://example.com',
'envelope' => [
'sender' => 'sender@example.org',
'recipients' => ['redirected@example.org', 'redirected1@example.org'],
],
],
]);
};

View File

@ -0,0 +1,18 @@
<?php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
return static function (ContainerConfigurator $container) {
$container->extension('framework', [
'mailer' => [
'transports' => [
'transport1' => 'smtp://example1.com',
'transport2' => 'smtp://example2.com',
],
'envelope' => [
'sender' => 'sender@example.org',
'recipients' => ['redirected@example.org', 'redirected1@example.org'],
],
],
]);
};

View File

@ -0,0 +1,20 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
<framework:config>
<framework:mailer>
<framework:transport name="transport1">smtp://example1.com</framework:transport>
<framework:transport name="transport2">smtp://example2.com</framework:transport>
<framework:envelope>
<framework:sender>sender@example.org</framework:sender>
<framework:recipients>redirected@example.org</framework:recipients>
<framework:recipients>redirected1@example.org</framework:recipients>
</framework:envelope>
</framework:mailer>
</framework:config>
</container>

View File

@ -0,0 +1,10 @@
framework:
mailer:
transports:
transport1: 'smtp://example1.com'
transport2: 'smtp://example2.com'
envelope:
sender: sender@example.org
recipients:
- redirected@example.org
- redirected1@example.org

View File

@ -1617,13 +1617,29 @@ abstract class FrameworkExtensionTest extends TestCase
], $defaultOptions['peer_fingerprint']);
}
public function testMailer(): void
public function provideMailer(): array
{
$container = $this->createContainerFromFile('mailer');
return [
['mailer_with_dsn', ['main' => 'smtp://example.com']],
['mailer_with_transports', [
'transport1' => 'smtp://example1.com',
'transport2' => 'smtp://example2.com',
]],
];
}
/**
* @dataProvider provideMailer
*/
public function testMailer(string $configFile, array $expectedTransports): void
{
$container = $this->createContainerFromFile($configFile);
$this->assertTrue($container->hasAlias('mailer'));
$this->assertTrue($container->hasDefinition('mailer.transports'));
$this->assertSame($expectedTransports, $container->getDefinition('mailer.transports')->getArgument(0));
$this->assertTrue($container->hasDefinition('mailer.default_transport'));
$this->assertSame('smtp://example.com', $container->getDefinition('mailer.default_transport')->getArgument(0));
$this->assertSame(current($expectedTransports), $container->getDefinition('mailer.default_transport')->getArgument(0));
$this->assertTrue($container->hasDefinition('mailer.envelope_listener'));
$l = $container->getDefinition('mailer.envelope_listener');
$this->assertSame('sender@example.org', $l->getArgument(0));