|
13 | 13 |
|
14 | 14 | use PHPUnit\Framework\TestCase; |
15 | 15 | use Symfony\Component\Mailer\Envelope; |
| 16 | +use Symfony\Component\Mailer\Event\MessageEvent; |
| 17 | +use Symfony\Component\Mailer\Event\SentMessageEvent; |
16 | 18 | use Symfony\Component\Mailer\Exception\LogicException; |
17 | 19 | use Symfony\Component\Mailer\Exception\TransportException; |
18 | 20 | use Symfony\Component\Mailer\Transport\Smtp\SmtpTransport; |
|
24 | 26 | use Symfony\Component\Mime\Part\DataPart; |
25 | 27 | use Symfony\Component\Mime\Part\File; |
26 | 28 | use Symfony\Component\Mime\RawMessage; |
| 29 | +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; |
27 | 30 |
|
28 | 31 | /** |
29 | 32 | * @group time-sensitive |
@@ -137,6 +140,37 @@ public function testWriteEncodedRecipientAndSenderAddresses() |
137 | 140 | $this->assertContains("RCPT TO:<recipient2@example.org>\r\n", $stream->getCommands()); |
138 | 141 | } |
139 | 142 |
|
| 143 | + public function testMessageIdFromServerIsEmbeddedInSentMessageEvent() |
| 144 | + { |
| 145 | + $calls = 0; |
| 146 | + $eventDispatcher = $this->createMock(EventDispatcherInterface::class); |
| 147 | + $eventDispatcher->expects($this->any()) |
| 148 | + ->method('dispatch') |
| 149 | + ->with($this->callback(static function ($event) use (&$calls): bool { |
| 150 | + ++$calls; |
| 151 | + |
| 152 | + if (1 === $calls && $event instanceof MessageEvent) { |
| 153 | + return true; |
| 154 | + } |
| 155 | + |
| 156 | + if (2 === $calls && $event instanceof SentMessageEvent && '000501c4054c' === $event->getMessage()->getMessageId()) { |
| 157 | + return true; |
| 158 | + } |
| 159 | + |
| 160 | + return false; |
| 161 | + })); |
| 162 | + $transport = new SmtpTransport(new DummyStream(), $eventDispatcher); |
| 163 | + |
| 164 | + $email = new Email(); |
| 165 | + $email->from('sender@example.com'); |
| 166 | + $email->to('recipient@example.com'); |
| 167 | + $email->text('.'); |
| 168 | + |
| 169 | + $transport->send($email); |
| 170 | + |
| 171 | + $this->assertSame(2, $calls); |
| 172 | + } |
| 173 | + |
140 | 174 | public function testAssertResponseCodeNoCodes() |
141 | 175 | { |
142 | 176 | $this->expectException(LogicException::class); |
|
0 commit comments