10000 support egulias/email-validator 2.x · symfony/symfony@7a9c231 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7a9c231

Browse files
committed
support egulias/email-validator 2.x
1 parent 1298ce5 commit 7a9c231

File tree

4 files changed

+86
-3
lines changed

4 files changed

+86
-3
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
"monolog/monolog": "~1.11",
8585
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
8686
"predis/predis": "~1.0",
87-
"egulias/email-validator": "~1.2",
87+
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
8888
"symfony/polyfill-apcu": "~1.1",
8989
"symfony/security-acl": "~2.8|~3.0",
9090
"phpdocumentor/reflection-docblock": "^3.0"

src/Symfony/Component/Validator/Constraints/EmailValidator.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Symfony\Component\Validator\Constraints;
1313

14+
use Egulias\EmailValidator\Validation\EmailValidation;
15+
use Egulias\EmailValidator\Validation\RFCValidation;
1416
use Symfony\Component\Validator\Constraint;
1517
use Symfony\Component\Validator\ConstraintValidator;
1618
use Symfony\Component\Validator\Exception\RuntimeException;
@@ -61,7 +63,14 @@ public function validate($value, Constraint $constraint)
6163

6264
$strictValidator = new \Egulias\EmailValidator\EmailValidator();
6365

64-
if (!$strictValidator->isValid($value, false, true)) {
66+
if (interface_exists(EmailValidation::class) && !$strictValidator->isValid($value, new RFCValidation())) {
67+
$this->context->buildViolation($constraint->message)
68+
->setParameter('{{ value }}', $this->formatValue($value))
69+
->setCode(Email::INVALID_FORMAT_ERROR)
70+
->addViolation();
71+
72+
return;
73+
} elseif (!interface_exists(EmailValidation::class) && !$strictValidator->isValid($value, false, true)) {
6574
$this->context->buildViolation($constraint->message)
6675
->setParameter('{{ value }}', $this->formatValue($value))
6776
->setCode(Email::INVALID_FORMAT_ERROR)

src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,80 @@ public function testStrict()
103103
$this->assertNoViolation();
104104
}
105105

106+
/**
107+
* @dataProvider getInvalidEmailsForStrictChecks
108+
*/
109+
public function testStrictWithInvalidEmails($email)
110+
{
111+
$constraint = new Email(array(
112+
'message' => 'myMessage',
113+
'strict' => true,
114+
));
115+
116+
$this->validator->validate($email, $constraint);
117+
118+
$this
119+
->buildViolation('myMessage')
120+
->setParameter('{{ value }}', '"'.$email.'"')
121+
->setCode(Email::INVALID_FORMAT_ERROR)
122+
->assertRaised();
123+
}
124+
125+
/**
126+
* @link https://github.com/egulias/EmailValidator/blob/1.2.8/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php
127+
*/
128+
public function getInvalidEmailsForStrictChecks()
129+
{
130+
return array(
131+
array('test@example.com test'),
132+
array('user name@example.com'),
133+
array('user name@example.com'),
134+
array('example.@example.co.uk'),
135+
array('example@example@example.co.uk'),
136+
array('(test_exampel@example.fr)'),
137+
array('example(example)example@example.co.uk'),
138+
array('.example@localhost'),
139+
array('ex\ample@localhost'),
140+
array('example@local\host'),
141+
array('example@localhost.'),
142+
array('user name@example.com'),
143+
array('username@ example . com'),
144+
array('example@(fake).com'),
145+
array('example@(fake.com'),
146+
array('username@example,com'),
147+
array('usern,ame@example.com'),
148+
array('user[na]me@example.com'),
149+
array('"""@iana.org'),
150+
array('"\"@iana.org'),
151+
array('"test"test@iana.org'),
152+
array('"test""test"@iana.org'),
153+
array('"test"."test"@iana.org'),
154+
array('"test".test@iana.org'),
155+
array('"test"' . chr(0) . '@iana.org'),
156+
array('"test\"@iana.org'),
157+
array(chr(226) . '@iana.org'),
158+
array('test@' . chr(226) . '.org'),
159+
array('\r\ntest@iana.org'),
160+
array('\r\n test@iana.org'),
161+
array('\r\n \r\ntest@iana.org'),
162+
array('\r\n \r\ntest@iana.org'),
163+
array('\r\n \r\n test@iana.org'),
164+
array('test@iana.org \r\n'),
165+
array('test@iana.org \r\n '),
166+
array('test@iana.org \r\n \r\n'),
167+
array('test@iana.org \r\n\r\n'),
168+
array('test@iana.org \r\n\r\n '),
169+
array('test@iana/icann.org'),
170+
array('test@foo;bar.com'),
171+
array('test;123@foobar.com'),
172+
array('test@example..com'),
173+
array('email.email@email."'),
174+
array('test@email>'),
175+
array('test@email<'),
176+
array('test@email{'),
177+
);
178+
}
179+
106180
/**
107181
* @dataProvider getDnsChecks
108182
* @requires function Symfony\Bridge\PhpUnit\DnsMock::withMockedHosts

src/Symfony/Component/Validator/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"symfony/cache": "~3.1",
3030
"doctrine/annotations": "~1.0",
3131
"doctrine/cache": "~1.0",
32-
"egulias/email-validator": "~1.2,>=1.2.1"
32+
"egulias/email-validator": "~1.2,>=1.2.8|~2.0"
3333
},
3434
"suggest": {
3535
"psr/cache-implementation": "For using the metadata cache.",

0 commit comments

Comments
 (0)
0