‪TYPO3CMS  11.5
MailMessageTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Symfony\Component\Mime\Address;
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
28 class ‪MailMessageTest extends UnitTestCase
29 {
33  protected ‪$resetSingletonInstances = true;
34 
35  protected ?‪MailMessage ‪$subject;
36 
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43  $this->subject = new ‪MailMessage();
44  }
45 
49  public function ‪isSentReturnsFalseIfMailWasNotSent(): void
50  {
51  self::assertFalse($this->subject->isSent());
52  }
53 
57  public function ‪setSubjectWorksAsExpected(): void
58  {
59  $this->subject->setSubject('Test');
60  self::assertSame('Test', $this->subject->getSubject());
61  $this->subject->setSubject('Test2');
62  self::assertSame('Test2', $this->subject->getSubject());
63  }
64 
68  public function ‪setDateWorksAsExpected(): void
69  {
70  $time = time();
71  $this->subject->setDate($time);
72  self::assertSame($time, (int)$this->subject->getDate()->format('U'));
73  $time++;
74  $this->subject->setDate($time);
75  self::assertSame($time, (int)$this->subject->getDate()->format('U'));
76  }
77 
81  public function ‪setReturnPathWorksAsExpected(): void
82  {
83  $this->subject->setReturnPath('noreply@typo3.com');
84  self::assertInstanceOf(Address::class, $this->subject->getReturnPath());
85  self::assertSame('noreply@typo3.com', $this->subject->getReturnPath()->getAddress());
86  $this->subject->setReturnPath('no-reply@typo3.com');
87  self::assertInstanceOf(Address::class, $this->subject->getReturnPath());
88  self::assertSame('no-reply@typo3.com', $this->subject->getReturnPath()->getAddress());
89  }
90 
91  public function ‪setSenderAddressDataProvider(): array
92  {
93  return [
94  'address without name' => [
95  'admin@typo3.com', null, [
96  ['admin@typo3.com'],
97  ],
98  ],
99  'address with name' => [
100  'admin@typo3.com', 'Admin', [
101  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
102  ],
103  ],
104  ];
105  }
106 
114  public function ‪setSenderWorksAsExpected($address, $name, array $expectedAddresses): void
115  {
116  $this->subject->setSender($address, $name);
117  self::assertInstanceOf(Address::class, $this->subject->getSender());
118  self::assertSame($address, $this->subject->getSender()->getAddress());
119  $this->‪assertCorrectAddresses([$this->subject->getSender()], $expectedAddresses);
120  }
121 
122  public function ‪globalSetAddressDataProvider(): array
123  {
124  return [
125  'address without name' => [
126  'admin@typo3.com', null, [
127  ['admin@typo3.com'],
128  ],
129  ],
130  'address with name' => [
131  'admin@typo3.com', 'Admin', [
132  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
133  ],
134  ],
135  'address with name enclosed in quotes' => [
136  'admin@typo3.com', '"Admin"', [
137  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
138  ],
139  ],
140  'multiple addresses without name' => [
141  [
142  'admin@typo3.com',
143  'system@typo3.com',
144  ], null, [
145  ['admin@typo3.com'],
146  ['system@typo3.com'],
147  ],
148  ],
149  'address as array' => [
150  ['admin@typo3.com' => 'Admin'], null, [
151  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
152  ],
153  ],
154  'multiple addresses as array' => [
155  [
156  'admin@typo3.com' => 'Admin',
157  'system@typo3.com' => 'System',
158  ], null, [
159  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
160  ['system@typo3.com', 'System', '<system@typo3.com>'],
161  ],
162  ],
163  'multiple addresses as array mixed' => [
164  [
165  'admin@typo3.com' => 'Admin',
166  'it@typo3.com',
167  'system@typo3.com' => 'System',
168  ], null, [
169  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
170  ['it@typo3.com'],
171  ['system@typo3.com', 'System', '<system@typo3.com>'],
172  ],
173  ],
174  ];
175  }
176 
184  public function ‪setFromWorksAsExpected($address, $name, array $expectedAddresses): void
185  {
186  // We first add one address, because set should override / remove existing addresses
187  $this->subject->addFrom('foo@bar.com', 'Foo');
188  $this->subject->setFrom($address, $name);
189  $this->‪assertCorrectAddresses($this->subject->getFrom(), $expectedAddresses);
190  }
191 
199  public function ‪setReplyToWorksAsExpected($address, $name, array $expectedAddresses): void
200  {
201  // We first add one address, because set should override / remove existing addresses
202  $this->subject->addReplyTo('foo@bar.com', 'Foo');
203  $this->subject->setReplyTo($address, $name);
204  $this->‪assertCorrectAddresses($this->subject->getReplyTo(), $expectedAddresses);
205  }
206 
214  public function ‪setToToWorksAsExpected($address, $name, array $expectedAddresses): void
215  {
216  // We first add one address, because set should override / remove existing addresses
217  $this->subject->addTo('foo@bar.com', 'Foo');
218  $this->subject->setTo($address, $name);
219  $this->‪assertCorrectAddresses($this->subject->getTo(), $expectedAddresses);
220  }
221 
229  public function ‪setCcToWorksAsExpected($address, $name, array $expectedAddresses): void
230  {
231  // We first add one address, because set should override / remove existing addresses
232  $this->subject->addCc('foo@bar.com', 'Foo');
233  $this->subject->setCc($address, $name);
234  $this->‪assertCorrectAddresses($this->subject->getCc(), $expectedAddresses);
235  }
236 
244  public function ‪setBccToWorksAsExpected($address, $name, array $expectedAddresses): void
245  {
246  // We first add one address, because set should override / remove existing addresses
247  $this->subject->addBcc('foo@bar.com', 'Foo');
248  $this->subject->setBcc($address, $name);
249  $this->‪assertCorrectAddresses($this->subject->getBcc(), $expectedAddresses);
250  }
251 
252  public function ‪globalAddAddressDataProvider(): array
253  {
254  return [
255  'address without name' => [
256  'admin@typo3.com', null, [
257  ['admin@typo3.com'],
258  ],
259  ],
260  'address with name' => [
261  'admin@typo3.com', 'Admin', [
262  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
263  ],
264  ],
265  'address as array' => [
266  ['admin@typo3.com' => 'Admin'], null, [
267  ['admin@typo3.com', 'Admin', '<admin@typo3.com>'],
268  ],
269  ],
270  ];
271  }
272 
280  public function ‪addFromToWorksAsExpected($address, $name, array $expectedAddresses): void
281  {
282  $this->subject->addFrom($address, $name);
283  $this->‪assertCorrectAddresses($this->subject->getFrom(), $expectedAddresses);
284  }
285 
293  public function ‪addReplyToToWorksAsExpected($address, $name, array $expectedAddresses): void
294  {
295  $this->subject->addReplyTo($address, $name);
296  $this->‪assertCorrectAddresses($this->subject->getReplyTo(), $expectedAddresses);
297  }
298 
306  public function ‪addToToWorksAsExpected($address, $name, array $expectedAddresses): void
307  {
308  $this->subject->addTo($address, $name);
309  $this->‪assertCorrectAddresses($this->subject->getTo(), $expectedAddresses);
310  }
311 
319  public function ‪addCcToWorksAsExpected($address, $name, array $expectedAddresses): void
320  {
321  $this->subject->addCc($address, $name);
322  $this->‪assertCorrectAddresses($this->subject->getCc(), $expectedAddresses);
323  }
324 
332  public function ‪addBccToWorksAsExpected($address, $name, array $expectedAddresses): void
333  {
334  $this->subject->addBcc($address, $name);
335  $this->‪assertCorrectAddresses($this->subject->getBcc(), $expectedAddresses);
336  }
337 
341  public function ‪setReadReceiptToToWorksAsExpected(): void
342  {
343  $this->subject->setReadReceiptTo('foo@example.com');
344  self::assertSame('foo@example.com', $this->subject->getHeaders()->get('Disposition-Notification-To')->getAddress()->getAddress());
345  }
346 
348  {
349  return [
350  'setFrom' => ['setFrom'],
351  'setReplyTo' => ['setReplyTo'],
352  'setTo' => ['setTo'],
353  'setCc' => ['setCc'],
354  'setBcc' => ['setBcc'],
355  ];
356  }
357 
363  public function ‪exceptionIsThrownForInvalidArgumentCombinations(string $method): void
364  {
365  $this->expectException(\InvalidArgumentException::class);
366  $this->expectExceptionCode(1570543657);
367  $this->subject->{$method}(['foo@example.com'], 'A name');
368  }
369 
377  protected function assertCorrectAddresses(array $dataToCheck, array $expectedAddresses): void
378  {
379  self::assertIsArray($dataToCheck);
380  self::assertCount(count($expectedAddresses), $dataToCheck);
381  foreach ($expectedAddresses as $key => $expectedAddress) {
382  self::assertIsArray($expectedAddress);
383  self::assertSame($expectedAddress[0], $dataToCheck[$key]->getAddress());
384  foreach ($expectedAddress as $expectedAddressPart) {
385  self::assertStringContainsString($expectedAddressPart, $dataToCheck[$key]->toString());
386  }
387  }
388  }
389 }
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setFromWorksAsExpected
‪setFromWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:183
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\globalSetAddressDataProvider
‪globalSetAddressDataProvider()
Definition: MailMessageTest.php:121
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: MailMessageTest.php:32
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\addFromToWorksAsExpected
‪addFromToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:279
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\$subject
‪MailMessage $subject
Definition: MailMessageTest.php:34
‪TYPO3\CMS\Core\Tests\Unit\Mail
Definition: FileSpoolTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setSenderAddressDataProvider
‪setSenderAddressDataProvider()
Definition: MailMessageTest.php:90
‪TYPO3\CMS\Core\Mail\MailMessage
Definition: MailMessage.php:28
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\addBccToWorksAsExpected
‪addBccToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:331
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setSenderWorksAsExpected
‪setSenderWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:113
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setDateWorksAsExpected
‪setDateWorksAsExpected()
Definition: MailMessageTest.php:67
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\addReplyToToWorksAsExpected
‪addReplyToToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:292
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setUp
‪setUp()
Definition: MailMessageTest.php:39
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setReplyToWorksAsExpected
‪setReplyToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:198
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\addCcToWorksAsExpected
‪addCcToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:318
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setSubjectWorksAsExpected
‪setSubjectWorksAsExpected()
Definition: MailMessageTest.php:56
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\addToToWorksAsExpected
‪addToToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:305
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setReturnPathWorksAsExpected
‪setReturnPathWorksAsExpected()
Definition: MailMessageTest.php:80
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\globalAddAddressDataProvider
‪globalAddAddressDataProvider()
Definition: MailMessageTest.php:251
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setCcToWorksAsExpected
‪setCcToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:228
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setReadReceiptToToWorksAsExpected
‪setReadReceiptToToWorksAsExpected()
Definition: MailMessageTest.php:340
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\exceptionIsThrownForInvalidArgumentCombinationsDataProvider
‪exceptionIsThrownForInvalidArgumentCombinationsDataProvider()
Definition: MailMessageTest.php:346
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\isSentReturnsFalseIfMailWasNotSent
‪isSentReturnsFalseIfMailWasNotSent()
Definition: MailMessageTest.php:48
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest
Definition: MailMessageTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\assertCorrectAddresses
‪assertCorrectAddresses(array $dataToCheck, array $expectedAddresses)
Definition: MailMessageTest.php:376
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\exceptionIsThrownForInvalidArgumentCombinations
‪exceptionIsThrownForInvalidArgumentCombinations(string $method)
Definition: MailMessageTest.php:362
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setBccToWorksAsExpected
‪setBccToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:243
‪TYPO3\CMS\Core\Tests\Unit\Mail\MailMessageTest\setToToWorksAsExpected
‪setToToWorksAsExpected($address, $name, array $expectedAddresses)
Definition: MailMessageTest.php:213