Version 1
[yaffs-website] / vendor / egulias / email-validator / tests / egulias / Tests / EmailValidator / EmailValidatorTest.php
diff --git a/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php b/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php
new file mode 100644 (file)
index 0000000..d508376
--- /dev/null
@@ -0,0 +1,385 @@
+<?php
+
+namespace Egulias\Tests\EmailValidator;
+
+use Egulias\EmailValidator\EmailValidator;
+
+class EmailValidatorTest extends \PHPUnit_Framework_TestCase
+{
+    protected $validator;
+
+    protected function setUp()
+    {
+        $this->validator = new EmailValidator();
+    }
+
+    protected function tearDown()
+    {
+        $this->validator = null;
+    }
+
+    /**
+     * @dataProvider getValidEmails
+     */
+    public function testValidEmails($email)
+    {
+        $this->assertTrue($this->validator->isValid($email));
+    }
+
+    public function testInvalidUTF8Email()
+    {
+        $validator = new EmailValidator;
+        $email     = "\x80\x81\x82@\x83\x84\x85.\x86\x87\x88";
+
+        $this->assertFalse($validator->isValid($email));
+    }
+
+    public function getValidEmails()
+    {
+        return array(
+            array('â@iana.org'),
+            array('fabien@symfony.com'),
+            array('example@example.co.uk'),
+            array('fabien_potencier@example.fr'),
+            array('example@localhost'),
+            array('fab\'ien@symfony.com'),
+            array('fab\ ien@symfony.com'),
+            array('example((example))@fakedfake.co.uk'),
+            array('example@faked(fake).co.uk'),
+            array('fabien+@symfony.com'),
+            array('инфо@письмо.рф'),
+            array('"username"@example.com'),
+            array('"user,name"@example.com'),
+            array('"user name"@example.com'),
+            array('"user@name"@example.com'),
+            array('"\a"@iana.org'),
+            array('"test\ test"@iana.org'),
+            array('""@iana.org'),
+            array('"\""@iana.org'),
+            array('müller@möller.de'),
+            array('test@email*'),
+            array('test@email!'),
+            array('test@email&'),
+            array('test@email^'),
+            array('test@email%'),
+            array('test@email$'),
+            array('test@email.com.au'),
+            array('1500111@профи-инвест.рф'),
+        );
+    }
+
+    /**
+     * @dataProvider getInvalidEmails
+     */
+    public function testInvalidEmails($email)
+    {
+        $this->assertFalse($this->validator->isValid($email));
+    }
+
+    public function getInvalidEmails()
+    {
+        return array(
+            array('test@example.com test'),
+            array('user  name@example.com'),
+            array('user   name@example.com'),
+            array('example.@example.co.uk'),
+            array('example@example@example.co.uk'),
+            array('(test_exampel@example.fr)'),
+            array('example(example)example@example.co.uk'),
+            array('.example@localhost'),
+            array('ex\ample@localhost'),
+            array('example@local\host'),
+            array('example@localhost\\'),
+            array('example@localhost.'),
+            array('user name@example.com'),
+            array('username@ example . com'),
+            array('example@(fake).com'),
+            array('example@(fake.com'),
+            array('username@example,com'),
+            array('usern,ame@example.com'),
+            array('user[na]me@example.com'),
+            array('"""@iana.org'),
+            array('"\"@iana.org'),
+            array('"test"test@iana.org'),
+            array('"test""test"@iana.org'),
+            array('"test"."test"@iana.org'),
+            array('"test".test@iana.org'),
+            array('"test"' . chr(0) . '@iana.org'),
+            array('"test\"@iana.org'),
+            array(chr(226) . '@iana.org'),
+            array('test@' . chr(226) . '.org'),
+            array('\r\ntest@iana.org'),
+            array('\r\n test@iana.org'),
+            array('\r\n \r\ntest@iana.org'),
+            array('\r\n \r\ntest@iana.org'),
+            array('\r\n \r\n test@iana.org'),
+            array('test@iana.org \r\n'),
+            array('test@iana.org \r\n '),
+            array('test@iana.org \r\n \r\n'),
+            array('test@iana.org \r\n\r\n'),
+            array('test@iana.org  \r\n\r\n '),
+            array('test@iana/icann.org'),
+            array('test@foo;bar.com'),
+            array('test;123@foobar.com'),
+            array('test@example..com'),
+            array('email.email@email."'),
+            array('test@email>'),
+            array('test@email<'),
+            array('test@email{'),
+            array('test@email.com]'),
+            array('test@ema[il.com'),
+        );
+    }
+
+    /**
+     * @dataProvider getInvalidEmailsWithErrors
+     */
+    public function testInvalidEmailsWithErrorsCheck($errors, $email)
+    {
+        $this->assertFalse($this->validator->isValid($email));
+
+        $this->assertEquals($errors, $this->validator->getError());
+    }
+
+    public function getInvalidEmailsWithErrors()
+    {
+        return array(
+            array(EmailValidator::ERR_NOLOCALPART, '@example.co.uk'),
+            array(EmailValidator::ERR_NODOMAIN, 'example@'),
+            array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-.co.uk'),
+            array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-'),
+            array(EmailValidator::ERR_CONSECUTIVEATS, 'example@@example.co.uk'),
+            array(EmailValidator::ERR_CONSECUTIVEDOTS, 'example..example@example.co.uk'),
+            array(EmailValidator::ERR_CONSECUTIVEDOTS, 'example@example..co.uk'),
+            array(EmailValidator::ERR_EXPECTING_ATEXT, '<fabien_potencier>@example.fr'),
+            array(EmailValidator::ERR_DOT_START, '.example@localhost'),
+            array(EmailValidator::ERR_DOT_START, 'example@.localhost'),
+            array(EmailValidator::ERR_DOT_END, 'example@localhost.'),
+            array(EmailValidator::ERR_DOT_END, 'example.@example.co.uk'),
+            array(EmailValidator::ERR_UNCLOSEDCOMMENT, '(example@localhost'),
+            array(EmailValidator::ERR_UNOPENEDCOMMENT, 'comment)example@localhost'),
+            array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example(comment))@localhost'),
+            array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@comment)localhost'),
+            array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@localhost(comment))'),
+            array(EmailValidator::ERR_UNOPENEDCOMMENT, 'example@(comment))example.com'),
+            array(EmailValidator::ERR_UNCLOSEDQUOTEDSTR, '"example@localhost'),
+            array(EmailValidator::ERR_EXPECTING_ATEXT, 'exa"mple@localhost'),
+            //This was the original. But atext is not allowed after \n
+            //array(EmailValidator::ERR_EXPECTING_ATEXT, "exampl\ne@example.co.uk"),
+            array(EmailValidator::ERR_ATEXT_AFTER_CFWS, "exampl\ne@example.co.uk"),
+            array(EmailValidator::ERR_EXPECTING_DTEXT, "example@[[]"),
+            array(EmailValidator::ERR_ATEXT_AFTER_CFWS, "exampl\te@example.co.uk"),
+            array(EmailValidator::ERR_CR_NO_LF, "example@exa\rmple.co.uk"),
+            array(EmailValidator::ERR_CR_NO_LF, "example@[\r]"),
+            array(EmailValidator::ERR_CR_NO_LF, "exam\rple@example.co.uk"),
+        );
+    }
+
+    /**
+     * @dataProvider getInvalidEmailsWithWarnings
+     */
+    public function testValidEmailsWithWarningsCheck($warnings, $email)
+    {
+        $this->assertTrue($this->validator->isValid($email, true));
+
+        $this->assertEquals($warnings, $this->validator->getWarnings());
+    }
+
+    /**
+     * @dataProvider getInvalidEmailsWithWarnings
+     */
+    public function testInvalidEmailsWithDnsCheckAndStrictMode($warnings, $email)
+    {
+        $this->assertFalse($this->validator->isValid($email, true, true));
+
+        $this->assertEquals($warnings, $this->validator->getWarnings());
+    }
+
+    public function getInvalidEmailsWithWarnings()
+    {
+        return array(
+            array(
+                array(
+                    EmailValidator::DEPREC_CFWS_NEAR_AT,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                'example @invalid.example.com'
+            ),
+            array(
+                array(
+                    EmailValidator::DEPREC_CFWS_NEAR_AT,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                'example@ invalid.example.com'
+            ),
+            array(
+                array(
+                    EmailValidator::CFWS_COMMENT,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                'example@invalid.example(examplecomment).com'
+            ),
+            array(
+                array(
+                    EmailValidator::CFWS_COMMENT,
+                    EmailValidator::DEPREC_CFWS_NEAR_AT,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example(examplecomment)@invalid.example.com'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_QUOTEDSTRING,
+                    EmailValidator::CFWS_FWS,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                "\"\t\"@invalid.example.com"
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_QUOTEDSTRING,
+                    EmailValidator::CFWS_FWS,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                "\"\r\"@invalid.example.com"
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[127.0.0.1]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5321_IPV6DEPRECATED,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370::]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5322_IPV6_MAXGRPS,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334::]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5322_IPV6_2X2XCOLON,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:1::1::1]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_DOMLIT_OBSDTEXT,
+                    EmailValidator::RFC5322_DOMAINLITERAL,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                "example@[\n]"
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_DOMAINLITERAL,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[::1]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_DOMAINLITERAL,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[::123.45.67.178]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_IPV6_COLONSTRT,
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5322_IPV6_GRPCOUNT,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6::2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5322_IPV6_BADCHAR,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:z001:0db8:85a3:0000:0000:8a2e:0370:7334]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_ADDRESSLITERAL,
+                    EmailValidator::RFC5322_IPV6_COLONEND,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:]'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5321_QUOTEDSTRING,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                '"example"@invalid.example.com'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_LOCAL_TOOLONG,
+                    EmailValidator::DNSWARN_NO_RECORD
+                ),
+                'too_long_localpart_too_long_localpart_too_long_localpart_too_long_localpart@invalid.example.com'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_LABEL_TOOLONG,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart.co.uk'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_DOMAIN_TOOLONG,
+                    EmailValidator::RFC5322_TOOLONG,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocal'.
+                'parttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'.
+                'toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'
+            ),
+            array(
+                array(
+                    EmailValidator::RFC5322_DOMAIN_TOOLONG,
+                    EmailValidator::RFC5322_TOOLONG,
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocal'.
+                'parttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'.
+                'toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpar'
+            ),
+            array(
+                array(
+                    EmailValidator::DNSWARN_NO_RECORD,
+                ),
+                'test@test'
+            ),
+        );
+    }
+
+    public function testInvalidEmailsWithStrict()
+    {
+        $this->assertFalse($this->validator->isValid('"test"@test', false, true));
+    }
+}