Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / egulias / email-validator / tests / egulias / Tests / EmailValidator / EmailValidatorTest.php
1 <?php
2
3 namespace Egulias\Tests\EmailValidator;
4
5 use Egulias\EmailValidator\EmailValidator;
6
7 class EmailValidatorTest extends \PHPUnit_Framework_TestCase
8 {
9     protected $validator;
10
11     protected function setUp()
12     {
13         $this->validator = new EmailValidator();
14     }
15
16     protected function tearDown()
17     {
18         $this->validator = null;
19     }
20
21     /**
22      * @dataProvider getValidEmails
23      */
24     public function testValidEmails($email)
25     {
26         $this->assertTrue($this->validator->isValid($email));
27     }
28
29     public function testInvalidUTF8Email()
30     {
31         $validator = new EmailValidator;
32         $email     = "\x80\x81\x82@\x83\x84\x85.\x86\x87\x88";
33
34         $this->assertFalse($validator->isValid($email));
35     }
36
37     public function getValidEmails()
38     {
39         return array(
40             array('â@iana.org'),
41             array('fabien@symfony.com'),
42             array('example@example.co.uk'),
43             array('fabien_potencier@example.fr'),
44             array('example@localhost'),
45             array('fab\'ien@symfony.com'),
46             array('fab\ ien@symfony.com'),
47             array('example((example))@fakedfake.co.uk'),
48             array('example@faked(fake).co.uk'),
49             array('fabien+@symfony.com'),
50             array('инфо@письмо.рф'),
51             array('"username"@example.com'),
52             array('"user,name"@example.com'),
53             array('"user name"@example.com'),
54             array('"user@name"@example.com'),
55             array('"\a"@iana.org'),
56             array('"test\ test"@iana.org'),
57             array('""@iana.org'),
58             array('"\""@iana.org'),
59             array('müller@möller.de'),
60             array('test@email*'),
61             array('test@email!'),
62             array('test@email&'),
63             array('test@email^'),
64             array('test@email%'),
65             array('test@email$'),
66             array('test@email.com.au'),
67             array('1500111@профи-инвест.рф'),
68         );
69     }
70
71     /**
72      * @dataProvider getInvalidEmails
73      */
74     public function testInvalidEmails($email)
75     {
76         $this->assertFalse($this->validator->isValid($email));
77     }
78
79     public function getInvalidEmails()
80     {
81         return array(
82             array('test@example.com test'),
83             array('user  name@example.com'),
84             array('user   name@example.com'),
85             array('example.@example.co.uk'),
86             array('example@example@example.co.uk'),
87             array('(test_exampel@example.fr)'),
88             array('example(example)example@example.co.uk'),
89             array('.example@localhost'),
90             array('ex\ample@localhost'),
91             array('example@local\host'),
92             array('example@localhost\\'),
93             array('example@localhost.'),
94             array('user name@example.com'),
95             array('username@ example . com'),
96             array('example@(fake).com'),
97             array('example@(fake.com'),
98             array('username@example,com'),
99             array('usern,ame@example.com'),
100             array('user[na]me@example.com'),
101             array('"""@iana.org'),
102             array('"\"@iana.org'),
103             array('"test"test@iana.org'),
104             array('"test""test"@iana.org'),
105             array('"test"."test"@iana.org'),
106             array('"test".test@iana.org'),
107             array('"test"' . chr(0) . '@iana.org'),
108             array('"test\"@iana.org'),
109             array(chr(226) . '@iana.org'),
110             array('test@' . chr(226) . '.org'),
111             array('\r\ntest@iana.org'),
112             array('\r\n test@iana.org'),
113             array('\r\n \r\ntest@iana.org'),
114             array('\r\n \r\ntest@iana.org'),
115             array('\r\n \r\n test@iana.org'),
116             array('test@iana.org \r\n'),
117             array('test@iana.org \r\n '),
118             array('test@iana.org \r\n \r\n'),
119             array('test@iana.org \r\n\r\n'),
120             array('test@iana.org  \r\n\r\n '),
121             array('test@iana/icann.org'),
122             array('test@foo;bar.com'),
123             array('test;123@foobar.com'),
124             array('test@example..com'),
125             array('email.email@email."'),
126             array('test@email>'),
127             array('test@email<'),
128             array('test@email{'),
129             array('test@email.com]'),
130             array('test@ema[il.com'),
131         );
132     }
133
134     /**
135      * @dataProvider getInvalidEmailsWithErrors
136      */
137     public function testInvalidEmailsWithErrorsCheck($errors, $email)
138     {
139         $this->assertFalse($this->validator->isValid($email));
140
141         $this->assertEquals($errors, $this->validator->getError());
142     }
143
144     public function getInvalidEmailsWithErrors()
145     {
146         return array(
147             array(EmailValidator::ERR_NOLOCALPART, '@example.co.uk'),
148             array(EmailValidator::ERR_NODOMAIN, 'example@'),
149             array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-.co.uk'),
150             array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-'),
151             array(EmailValidator::ERR_CONSECUTIVEATS, 'example@@example.co.uk'),
152             array(EmailValidator::ERR_CONSECUTIVEDOTS, 'example..example@example.co.uk'),
153             array(EmailValidator::ERR_CONSECUTIVEDOTS, 'example@example..co.uk'),
154             array(EmailValidator::ERR_EXPECTING_ATEXT, '<fabien_potencier>@example.fr'),
155             array(EmailValidator::ERR_DOT_START, '.example@localhost'),
156             array(EmailValidator::ERR_DOT_START, 'example@.localhost'),
157             array(EmailValidator::ERR_DOT_END, 'example@localhost.'),
158             array(EmailValidator::ERR_DOT_END, 'example.@example.co.uk'),
159             array(EmailValidator::ERR_UNCLOSEDCOMMENT, '(example@localhost'),
160             array(EmailValidator::ERR_UNOPENEDCOMMENT, 'comment)example@localhost'),
161             array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example(comment))@localhost'),
162             array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@comment)localhost'),
163             array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@localhost(comment))'),
164             array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@(comment))example.com'),
165             array(EmailValidator::ERR_UNCLOSEDQUOTEDSTR, '"example@localhost'),
166             array(EmailValidator::ERR_EXPECTING_ATEXT, 'exa"mple@localhost'),
167             //This was the original. But atext is not allowed after \n
168             //array(EmailValidator::ERR_EXPECTING_ATEXT, "exampl\ne@example.co.uk"),
169             array(EmailValidator::ERR_ATEXT_AFTER_CFWS, "exampl\ne@example.co.uk"),
170             array(EmailValidator::ERR_EXPECTING_DTEXT, "example@[[]"),
171             array(EmailValidator::ERR_ATEXT_AFTER_CFWS, "exampl\te@example.co.uk"),
172             array(EmailValidator::ERR_CR_NO_LF, "example@exa\rmple.co.uk"),
173             array(EmailValidator::ERR_CR_NO_LF, "example@[\r]"),
174             array(EmailValidator::ERR_CR_NO_LF, "exam\rple@example.co.uk"),
175         );
176     }
177
178     /**
179      * @dataProvider getInvalidEmailsWithWarnings
180      */
181     public function testValidEmailsWithWarningsCheck($warnings, $email)
182     {
183         $this->assertFalse($this->validator->isValid($email, true));
184
185         $this->assertEquals($warnings, $this->validator->getWarnings());
186     }
187
188     /**
189      * @dataProvider getInvalidEmailsWithWarnings
190      */
191     public function testInvalidEmailsWithDnsCheckAndStrictMode($warnings, $email)
192     {
193         $this->assertFalse($this->validator->isValid($email, true, true));
194
195         $this->assertEquals($warnings, $this->validator->getWarnings());
196     }
197
198     public function getInvalidEmailsWithWarnings()
199     {
200         return array(
201             array(
202                 array(
203                     EmailValidator::DEPREC_CFWS_NEAR_AT,
204                     EmailValidator::DNSWARN_NO_RECORD
205                 ),
206                 'example @invalid.example.com'
207             ),
208             array(
209                 array(
210                     EmailValidator::DEPREC_CFWS_NEAR_AT,
211                     EmailValidator::DNSWARN_NO_RECORD
212                 ),
213                 'example@ invalid.example.com'
214             ),
215             array(
216                 array(
217                     EmailValidator::CFWS_COMMENT,
218                     EmailValidator::DNSWARN_NO_RECORD
219                 ),
220                 'example@invalid.example(examplecomment).com'
221             ),
222             array(
223                 array(
224                     EmailValidator::CFWS_COMMENT,
225                     EmailValidator::DEPREC_CFWS_NEAR_AT,
226                     EmailValidator::DNSWARN_NO_RECORD,
227                 ),
228                 'example(examplecomment)@invalid.example.com'
229             ),
230             array(
231                 array(
232                     EmailValidator::RFC5321_QUOTEDSTRING,
233                     EmailValidator::CFWS_FWS,
234                     EmailValidator::DNSWARN_NO_RECORD,
235                 ),
236                 "\"\t\"@invalid.example.com"
237             ),
238             array(
239                 array(
240                     EmailValidator::RFC5321_QUOTEDSTRING,
241                     EmailValidator::CFWS_FWS,
242                     EmailValidator::DNSWARN_NO_RECORD
243                 ),
244                 "\"\r\"@invalid.example.com"
245             ),
246             array(
247                 array(
248                     EmailValidator::RFC5321_ADDRESSLITERAL,
249                     EmailValidator::DNSWARN_NO_RECORD,
250                 ),
251                 'example@[127.0.0.1]'
252             ),
253             array(
254                 array(
255                     EmailValidator::RFC5321_ADDRESSLITERAL,
256                     EmailValidator::DNSWARN_NO_RECORD,
257                 ),
258                 'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
259             ),
260             array(
261                 array(
262                     EmailValidator::RFC5321_ADDRESSLITERAL,
263                     EmailValidator::RFC5321_IPV6DEPRECATED,
264                     EmailValidator::DNSWARN_NO_RECORD,
265                 ),
266                 'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370::]'
267             ),
268             array(
269                 array(
270                     EmailValidator::RFC5321_ADDRESSLITERAL,
271                     EmailValidator::RFC5322_IPV6_MAXGRPS,
272                     EmailValidator::DNSWARN_NO_RECORD,
273                 ),
274                 'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334::]'
275             ),
276             array(
277                 array(
278                     EmailValidator::RFC5321_ADDRESSLITERAL,
279                     EmailValidator::RFC5322_IPV6_2X2XCOLON,
280                     EmailValidator::DNSWARN_NO_RECORD,
281                 ),
282                 'example@[IPv6:1::1::1]'
283             ),
284             array(
285                 array(
286                     EmailValidator::RFC5322_DOMLIT_OBSDTEXT,
287                     EmailValidator::RFC5322_DOMAINLITERAL,
288                     EmailValidator::DNSWARN_NO_RECORD,
289                 ),
290                 "example@[\n]"
291             ),
292             array(
293                 array(
294                     EmailValidator::RFC5322_DOMAINLITERAL,
295                     EmailValidator::DNSWARN_NO_RECORD,
296                 ),
297                 'example@[::1]'
298             ),
299             array(
300                 array(
301                     EmailValidator::RFC5322_DOMAINLITERAL,
302                     EmailValidator::DNSWARN_NO_RECORD,
303                 ),
304                 'example@[::123.45.67.178]'
305             ),
306             array(
307                 array(
308                     EmailValidator::RFC5322_IPV6_COLONSTRT,
309                     EmailValidator::RFC5321_ADDRESSLITERAL,
310                     EmailValidator::RFC5322_IPV6_GRPCOUNT,
311                     EmailValidator::DNSWARN_NO_RECORD,
312                 ),
313                 'example@[IPv6::2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
314             ),
315             array(
316                 array(
317                     EmailValidator::RFC5321_ADDRESSLITERAL,
318                     EmailValidator::RFC5322_IPV6_BADCHAR,
319                     EmailValidator::DNSWARN_NO_RECORD,
320                 ),
321                 'example@[IPv6:z001:0db8:85a3:0000:0000:8a2e:0370:7334]'
322             ),
323             array(
324                 array(
325                     EmailValidator::RFC5321_ADDRESSLITERAL,
326                     EmailValidator::RFC5322_IPV6_COLONEND,
327                     EmailValidator::DNSWARN_NO_RECORD,
328                 ),
329                 'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:]'
330             ),
331             array(
332                 array(
333                     EmailValidator::RFC5321_QUOTEDSTRING,
334                     EmailValidator::DNSWARN_NO_RECORD
335                 ),
336                 '"example"@invalid.example.com'
337             ),
338             array(
339                 array(
340                     EmailValidator::RFC5322_LOCAL_TOOLONG,
341                     EmailValidator::DNSWARN_NO_RECORD
342                 ),
343                 'too_long_localpart_too_long_localpart_too_long_localpart_too_long_localpart@invalid.example.com'
344             ),
345             array(
346                 array(
347                     EmailValidator::RFC5322_LABEL_TOOLONG,
348                     EmailValidator::DNSWARN_NO_RECORD,
349                 ),
350                 'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart.co.uk'
351             ),
352             array(
353                 array(
354                     EmailValidator::RFC5322_DOMAIN_TOOLONG,
355                     EmailValidator::RFC5322_TOOLONG,
356                     EmailValidator::DNSWARN_NO_RECORD,
357                 ),
358                 'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocal'.
359                 'parttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'.
360                 'toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'
361             ),
362             array(
363                 array(
364                     EmailValidator::RFC5322_DOMAIN_TOOLONG,
365                     EmailValidator::RFC5322_TOOLONG,
366                     EmailValidator::DNSWARN_NO_RECORD,
367                 ),
368                 'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocal'.
369                 'parttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'.
370                 'toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpar'
371             ),
372             array(
373                 array(
374                     EmailValidator::DNSWARN_NO_RECORD,
375                 ),
376                 'test@test'
377             ),
378         );
379     }
380
381     public function testInvalidEmailsWithStrict()
382     {
383         $this->assertFalse($this->validator->isValid('"test"@test', false, true));
384     }
385 }