@@ -276,4 +276,71 @@ public function testSymfonySerialize()
276276 $ serialized = $ serializer ->serialize ($ e , 'json ' );
277277 $ this ->assertStringMatchesFormat ($ expectedJson , json_encode (json_decode ($ serialized ), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES ));
278278 }
279+
280+ /**
281+ * @dataProvider ensureValidityProvider
282+ */
283+ public function testEnsureValidity (array $ headers , ?string $ exceptionClass , ?string $ exceptionMessage )
284+ {
285+ if ($ exceptionClass ) {
286+ $ this ->expectException ($ exceptionClass );
287+ $ this ->expectExceptionMessage ($ exceptionMessage );
288+ } else {
289+ $ this ->expectNotToPerformAssertions ();
290+ }
291+
292+ $ m = new Message ();
293+ foreach ($ headers as $ headerName => $ headerValue ) {
294+ $ m ->getHeaders ()->addMailboxListHeader ($ headerName , $ headerValue );
295+ }
296+ $ m ->ensureValidity ();
297+ }
298+
299+ public function ensureValidityProvider ()
300+ {
301+ return [
302+ 'Valid address fields ' => [
303+ [
304+ 'To ' => ['dummy@symfony.com ' ],
305+ 'From ' => ['test@symfony.com ' ],
306+ ],
307+ null ,
308+ null ,
309+ ],
310+
311+ 'No destination address fields ' => [
312+ [
313+ 'From ' => ['test@symfony.com ' ],
314+ ],
315+ LogicException::class,
316+ 'An email must have a "To", "Cc", or "Bcc" header. ' ,
317+ ],
318+
319+ 'Empty destination address fields ' => [
320+ [
321+ 'To ' => [],
322+ 'From ' => ['test@symfony.com ' ],
323+ ],
324+ LogicException::class,
325+ 'An email must have a "To", "Cc", or "Bcc" header. ' ,
326+ ],
327+
328+ 'No originator fields ' => [
329+ [
330+ 'To ' => ['dummy@symfony.com ' ],
331+ ],
332+ LogicException::class,
333+ 'An email must have a "From" or a "Sender" header. ' ,
334+ ],
335+
336+ 'Empty originator fields ' => [
337+ [
338+ 'To ' => ['dummy@symfony.com ' ],
339+ 'From ' => [],
340+ ],
341+ LogicException::class,
342+ 'An email must have a "From" or a "Sender" header. ' ,
343+ ],
344+ ];
345+ }
279346}
0 commit comments