Skip to content

Commit

Permalink
COMMA is not allowed in domain part
Browse files Browse the repository at this point in the history
egulias committed Aug 21, 2014

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
1 parent bb530a1 commit 82f8514
Showing 3 changed files with 12 additions and 5 deletions.
8 changes: 4 additions & 4 deletions src/Egulias/EmailValidator/EmailLexer.php
Original file line number Diff line number Diff line change
@@ -116,13 +116,13 @@ public function moveNext()
protected function getCatchablePatterns()
{
return array(
'[a-zA-Z_]+[4,6]?',
'[a-zA-Z_]+[46]?',
'[0-9]+',
'\r\n',
'::',
'\s+',
'[\x1-\x1F]+',
'.'
'[\x10-\x1F]+',
'.',
);
}

@@ -149,7 +149,7 @@ protected function getType(&$value)
return $this->charValue[$value];
}

if (preg_match('/[\x1-\x1F]+/', $value)) {
if (preg_match('/[\x10-\x1F]+/', $value)) {
return self::INVALID;
}

6 changes: 6 additions & 0 deletions src/Egulias/EmailValidator/Parser/DomainPart.php
Original file line number Diff line number Diff line change
@@ -235,12 +235,18 @@ protected function checkIPV4Tag($addressLiteral)

protected function checkDomainPartExceptions($prev)
{
if ($this->lexer->token['type'] === EmailLexer::S_COMMA) {
throw new \InvalidArgumentException('ERR_COMMA_IN_DOMAIN');
}

if ($this->lexer->token['type'] === EmailLexer::S_AT) {
throw new \InvalidArgumentException('ERR_CONSECUTIVEATS');
}

if ($this->lexer->token['type'] === EmailLexer::S_OPENQBRACKET && $prev['type'] !== EmailLexer::S_AT) {
throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
}

if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN && $this->lexer->isNextToken(EmailLexer::S_DOT)) {
throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
}
3 changes: 2 additions & 1 deletion tests/egulias/Tests/EmailValidator/EmailValidatorTest.php
Original file line number Diff line number Diff line change
@@ -45,7 +45,7 @@ public function getValidEmails()
/**
* @dataProvider getInvalidEmails
*/
public function testAInvalidEmails($email)
public function testInvalidEmails($email)
{
$this->assertFalse($this->validator->isValid($email));
}
@@ -65,6 +65,7 @@ public function getInvalidEmails()
array('username@ example . com'),
array('example@(fake).com'),
array('example@(fake.com'),
array('username@example,com'),
);
}

0 comments on commit 82f8514

Please sign in to comment.