sterntours/vendor/symfony/swiftmailer-bundle/Tests/DependencyInjection/SwiftmailerTransportFactoryTest.php
2020-07-09 12:49:32 +02:00

316 lines
11 KiB
PHP

<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bundle\SwiftmailerBundle\Tests\DependencyInjection;
use Symfony\Bundle\SwiftmailerBundle\DependencyInjection\SwiftmailerTransportFactory;
use Symfony\Component\Routing\RequestContext;
class SwiftmailerTransportFactoryTest extends \PHPUnit_Framework_TestCase
{
public function testCreateTransportWithSmtp()
{
$options = array(
'transport' => 'smtp',
'username' => 'user',
'password' => 'pass',
'host' => 'host',
'port' => 1234,
'timeout' => 42,
'source_ip' => 'source_ip',
'local_domain' => 'local_domain',
'encryption' => 'encryption',
'auth_mode' => 'auth_mode',
);
$transport = SwiftmailerTransportFactory::createTransport(
$options,
new RequestContext(),
new \Swift_Events_SimpleEventDispatcher()
);
$this->assertInstanceOf('Swift_Transport_EsmtpTransport', $transport);
$this->assertSame($transport->getHost(), $options['host']);
$this->assertSame($transport->getPort(), $options['port']);
$this->assertSame($transport->getEncryption(), $options['encryption']);
$this->assertSame($transport->getTimeout(), $options['timeout']);
$this->assertSame($transport->getSourceIp(), $options['source_ip']);
$authHandler = current($transport->getExtensionHandlers());
$this->assertSame($authHandler->getUsername(), $options['username']);
$this->assertSame($authHandler->getPassword(), $options['password']);
$this->assertSame($authHandler->getAuthMode(), $options['auth_mode']);
}
public function testCreateTransportWithSendmail()
{
$options = array(
'transport' => 'sendmail',
);
$transport = SwiftmailerTransportFactory::createTransport(
$options,
new RequestContext(),
new \Swift_Events_SimpleEventDispatcher()
);
$this->assertInstanceOf('Swift_Transport_SendmailTransport', $transport);
}
/**
* @group legacy
*/
public function testCreateTransportWithMail()
{
$options = array(
'transport' => 'mail',
);
$transport = SwiftmailerTransportFactory::createTransport(
$options,
new RequestContext(),
new \Swift_Events_SimpleEventDispatcher()
);
$this->assertInstanceOf('Swift_Transport_MailTransport', $transport);
}
public function testCreateTransportWithNull()
{
$options = array(
'transport' => 'null',
);
$transport = SwiftmailerTransportFactory::createTransport(
$options,
new RequestContext(),
new \Swift_Events_SimpleEventDispatcher()
);
$this->assertInstanceOf('Swift_Transport_NullTransport', $transport);
}
public function testCreateTransportWithSmtpAndWithoutRequestContext()
{
$options = array(
'transport' => 'smtp',
'username' => 'user',
'password' => 'pass',
'host' => 'host',
'port' => 1234,
'timeout' => 42,
'source_ip' => 'source_ip',
'local_domain' => 'local_domain',
'encryption' => 'encryption',
'auth_mode' => 'auth_mode',
);
$transport = SwiftmailerTransportFactory::createTransport(
$options,
null,
new \Swift_Events_SimpleEventDispatcher()
);
$this->assertInstanceOf('Swift_Transport_EsmtpTransport', $transport);
$this->assertSame($transport->getHost(), $options['host']);
$this->assertSame($transport->getPort(), $options['port']);
$this->assertSame($transport->getEncryption(), $options['encryption']);
$this->assertSame($transport->getTimeout(), $options['timeout']);
$this->assertSame($transport->getSourceIp(), $options['source_ip']);
$authHandler = current($transport->getExtensionHandlers());
$this->assertSame($authHandler->getUsername(), $options['username']);
$this->assertSame($authHandler->getPassword(), $options['password']);
$this->assertSame($authHandler->getAuthMode(), $options['auth_mode']);
}
/**
* @dataProvider optionsAndResultExpected
*/
public function testResolveOptions($options, $expected)
{
$result = SwiftmailerTransportFactory::resolveOptions($options);
$this->assertEquals($expected, $result);
}
public function optionsAndResultExpected()
{
return array(
array(
array(
'url' => '',
),
array(
'transport' => 'null',
'username' => null,
'password' => null,
'host' => null,
'port' => 25,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
'url' => '',
),
),
array(
array(
'url' => 'smtp://user:pass@host:1234',
),
array(
'transport' => 'smtp',
'username' => 'user',
'password' => 'pass',
'host' => 'host',
'port' => 1234,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
'url' => 'smtp://user:pass@host:1234',
),
),
array(
array(
'url' => 'smtp://user:pass@host:1234?transport=sendmail&username=username&password=password&host=example.com&port=5678',
),
array(
'transport' => 'sendmail',
'username' => 'username',
'password' => 'password',
'host' => 'example.com',
'port' => 5678,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
'url' => 'smtp://user:pass@host:1234?transport=sendmail&username=username&password=password&host=example.com&port=5678',
),
),
array(
array(
'url' => 'smtp://user:pass@host:1234?timeout=42&source_ip=source_ip&local_domain=local_domain&encryption=encryption&auth_mode=auth_mode',
),
array(
'transport' => 'smtp',
'username' => 'user',
'password' => 'pass',
'host' => 'host',
'port' => 1234,
'timeout' => 42,
'source_ip' => 'source_ip',
'local_domain' => 'local_domain',
'encryption' => 'encryption',
'auth_mode' => 'auth_mode',
'url' => 'smtp://user:pass@host:1234?timeout=42&source_ip=source_ip&local_domain=local_domain&encryption=encryption&auth_mode=auth_mode',
),
),
array(
array(),
array(
'transport' => 'null',
'username' => null,
'password' => null,
'host' => null,
'port' => 25,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
),
),
array(
array(
'transport' => 'smtp',
),
array(
'transport' => 'smtp',
'username' => null,
'password' => null,
'host' => null,
'port' => 25,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
),
),
array(
array(
'transport' => 'gmail',
),
array(
'transport' => 'smtp',
'username' => null,
'password' => null,
'host' => 'smtp.gmail.com',
'port' => 465,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => 'ssl',
'auth_mode' => 'login',
),
),
array(
array(
'transport' => 'sendmail',
),
array(
'transport' => 'sendmail',
'username' => null,
'password' => null,
'host' => null,
'port' => 25,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
),
),
array(
array(
'encryption' => 'ssl',
),
array(
'transport' => 'null',
'username' => null,
'password' => null,
'host' => null,
'port' => 465,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => 'ssl',
'auth_mode' => null,
),
),
array(
array(
'port' => 42,
),
array(
'transport' => 'null',
'username' => null,
'password' => null,
'host' => null,
'port' => 42,
'timeout' => null,
'source_ip' => null,
'local_domain' => null,
'encryption' => null,
'auth_mode' => null,
),
),
);
}
}