123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
- namespace Illuminate\Tests\Mail;
- use Aws\Ses\SesClient;
- use Illuminate\Config\Repository;
- use Illuminate\Container\Container;
- use Illuminate\Mail\MailManager;
- use Illuminate\Mail\Transport\SesTransport;
- use Illuminate\Support\Str;
- use Illuminate\View\Factory;
- use PHPUnit\Framework\TestCase;
- use Swift_Message;
- class MailSesTransportTest extends TestCase
- {
- public function testGetTransport()
- {
- $container = new Container;
- $container->singleton('config', function () {
- return new Repository([
- 'services.ses' => [
- 'key' => 'foo',
- 'secret' => 'bar',
- 'region' => 'us-east-1',
- ],
- ]);
- });
- $manager = new MailManager($container);
- /** @var \Illuminate\Mail\Transport\SesTransport $transport */
- $transport = $manager->createTransport(['transport' => 'ses']);
- $ses = $transport->ses();
- $this->assertSame('us-east-1', $ses->getRegion());
- }
- public function testSend()
- {
- $message = new Swift_Message('Foo subject', 'Bar body');
- $message->setSender('myself@example.com');
- $message->setTo('me@example.com');
- $message->setBcc('you@example.com');
- $client = $this->getMockBuilder(SesClient::class)
- ->addMethods(['sendRawEmail'])
- ->disableOriginalConstructor()
- ->getMock();
- $transport = new SesTransport($client);
- // Generate a messageId for our mock to return to ensure that the post-sent message
- // has X-Message-ID in its headers
- $messageId = Str::random(32);
- $sendRawEmailMock = new SendRawEmailMock($messageId);
- $client->expects($this->once())
- ->method('sendRawEmail')
- ->with($this->equalTo([
- 'Source' => 'myself@example.com',
- 'RawMessage' => ['Data' => (string) $message],
- ]))
- ->willReturn($sendRawEmailMock);
- $transport->send($message);
- $this->assertEquals($messageId, $message->getHeaders()->get('X-Message-ID')->getFieldBody());
- $this->assertEquals($messageId, $message->getHeaders()->get('X-SES-Message-ID')->getFieldBody());
- }
- public function testSesLocalConfiguration()
- {
- $container = new Container;
- $container->singleton('config', function () {
- return new Repository([
- 'mail' => [
- 'mailers' => [
- 'ses' => [
- 'transport' => 'ses',
- 'region' => 'eu-west-1',
- 'options' => [
- 'ConfigurationSetName' => 'Laravel',
- 'Tags' => [
- ['Name' => 'Laravel', 'Value' => 'Framework'],
- ],
- ],
- ],
- ],
- ],
- 'services' => [
- 'ses' => [
- 'region' => 'us-east-1',
- ],
- ],
- ]);
- });
- $container->instance('view', $this->createMock(Factory::class));
- $container->bind('events', function () {
- return null;
- });
- $manager = new MailManager($container);
- /** @var \Illuminate\Mail\Mailer $mailer */
- $mailer = $manager->mailer('ses');
- /** @var \Illuminate\Mail\Transport\SesTransport $transport */
- $transport = $mailer->getSwiftMailer()->getTransport();
- $this->assertSame('eu-west-1', $transport->ses()->getRegion());
- $this->assertSame([
- 'ConfigurationSetName' => 'Laravel',
- 'Tags' => [
- ['Name' => 'Laravel', 'Value' => 'Framework'],
- ],
- ], $transport->getOptions());
- }
- }
- class SendRawEmailMock
- {
- protected $getResponse;
- public function __construct($responseValue)
- {
- $this->getResponse = $responseValue;
- }
- public function get($key)
- {
- return $this->getResponse;
- }
- }
|