|
16 | 16 | use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
|
17 | 17 | use Symfony\Component\Mailer\Transport\RoundRobinTransport;
|
18 | 18 | use Symfony\Component\Mailer\Transport\TransportInterface;
|
| 19 | +use Symfony\Component\Mime\Header\Headers; |
| 20 | +use Symfony\Component\Mime\Message; |
19 | 21 | use Symfony\Component\Mime\RawMessage;
|
20 | 22 |
|
21 | 23 | /**
|
@@ -143,6 +145,27 @@ public function testSendOneDeadAndRecoveryWithinRetryPeriod()
|
143 | 145 | $this->assertTransports($t, 1, []);
|
144 | 146 | }
|
145 | 147 |
|
| 148 | + public function testSendOneDeadMessageAlterationsDoNotPersist() |
| 149 | + { |
| 150 | + $t1 = $this->createMock(TransportInterface::class); |
| 151 | + $t1->expects($this->once())->method('send') |
| 152 | + ->willReturnCallback(function (Message $message) { |
| 153 | + $message->getHeaders()->addTextHeader('X-Transport-1', 'value'); |
| 154 | + throw new TransportException(); |
| 155 | + }); |
| 156 | + $t2 = $this->createMock(TransportInterface::class); |
| 157 | + $t2->expects($this->once())->method('send'); |
| 158 | + $t = new RoundRobinTransport([$t1, $t2]); |
| 159 | + $p = new \ReflectionProperty($t, 'cursor'); |
| 160 | + $p->setValue($t, 0); |
| 161 | + $headers = new Headers(); |
| 162 | + $headers->addTextHeader('X-Shared', 'value'); |
| 163 | + $message = new Message($headers); |
| 164 | + $t->send($message); |
| 165 | + $this->assertSame($message->getHeaders()->get('X-Shared')->getBody(), 'value'); |
| 166 | + $this->assertFalse($message->getHeaders()->has('X-Transport-1')); |
| 167 | + } |
| 168 | + |
146 | 169 | public function testFailureDebugInformation()
|
147 | 170 | {
|
148 | 171 | $t1 = $this->createMock(TransportInterface::class);
|
|
0 commit comments