Domain Hyphened

This commit is contained in:
Eduardo Gulias Davis
2015-06-25 22:05:20 +02:00
parent f69cd9e42f
commit 76e52cc5ce
4 changed files with 18 additions and 7 deletions
@@ -11,8 +11,6 @@ use Egulias\EmailValidator\InvalidEmail;
*/
class EmailValidator
{
const ERR_DOMAINHYPHENSTART = 143;
const ERR_DOMAINHYPHENEND = 144;
const ERR_UNCLOSEDQUOTEDSTR = 145;
const ERR_UNCLOSEDCOMMENT = 146;
const ERR_UNCLOSEDDOMLIT = 147;
@@ -0,0 +1,11 @@
<?php
namespace Egulias\EmailValidator\Exception;
use Egulias\EmailValidator\InvalidEmail;
class DomainHyphened extends InvalidEmail
{
const CODE = 144;
const REASON = "Hyphen found in domain";
}
@@ -5,6 +5,7 @@ namespace Egulias\EmailValidator\Parser;
use Egulias\EmailValidator\EmailLexer;
use Egulias\EmailValidator\Exception\ConsecutiveAt;
use Egulias\EmailValidator\Exception\DomainHyphened;
use Egulias\EmailValidator\Exception\DotAtEnd;
use Egulias\EmailValidator\Exception\DotAtStart;
use Egulias\EmailValidator\Exception\ExpectedQPair;
@@ -31,7 +32,7 @@ class DomainPart extends Parser
throw new NoDomainPart();
}
if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN) {
throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
throw new DomainHyphened();
}
if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
@@ -48,7 +49,7 @@ class DomainPart extends Parser
throw new DotAtEnd();
}
if ($prev['type'] === EmailLexer::S_HYPHEN) {
throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
throw new DomainHyphened();
}
if ($length > self::DOMAIN_MAX_LENGTH) {
$this->warnings[] = EmailValidator::RFC5322_DOMAIN_TOOLONG;
@@ -274,7 +275,7 @@ class DomainPart extends Parser
}
if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN && $this->lexer->isNextToken(EmailLexer::S_DOT)) {
throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND');
throw new DomainHyphened();
}
if ($this->lexer->token['type'] === EmailLexer::S_BACKSLASH
@@ -6,6 +6,7 @@ use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Exception\AtextAfterCFWS;
use Egulias\EmailValidator\Exception\ConsecutiveAt;
use Egulias\EmailValidator\Exception\ConsecutiveDot;
use Egulias\EmailValidator\Exception\DomainHyphened;
use Egulias\EmailValidator\Exception\DotAtEnd;
use Egulias\EmailValidator\Exception\DotAtStart;
use Egulias\EmailValidator\Exception\ExpectingATEXT;
@@ -150,8 +151,8 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
return array(
array(NoLocalPart::CODE, '@example.co.uk'),
array(NoDomainPart::CODE, 'example@'),
array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-.co.uk'),
array(EmailValidator::ERR_DOMAINHYPHENEND, 'example@example-'),
array(DomainHyphened::CODE, 'example@example-.co.uk'),
array(DomainHyphened::CODE, 'example@example-'),
array(ConsecutiveAt::CODE, 'example@@example.co.uk'),
array(ConsecutiveDot::CODE, 'example..example@example.co.uk'),
array(ConsecutiveDot::CODE, 'example@example..co.uk'),