mirror of
https://github.com/egulias/EmailValidator.git
synced 2026-09-02 21:48:25 +00:00
#3 - Tests improvements and composer update
This commit is contained in:
@@ -10,7 +10,6 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">= 5.3.3",
|
||||
"jms/parser-lib": "dev-master",
|
||||
"doctrine/common": "~2.2"
|
||||
},
|
||||
"autoload": {
|
||||
|
||||
Generated
+4
-88
@@ -3,7 +3,7 @@
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||
],
|
||||
"hash": "f9ac90086b79cb53e8a623a0d533bd4b",
|
||||
"hash": "b58e1c8afd1dc9b8c11e4be257e18967",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/common",
|
||||
@@ -73,90 +73,6 @@
|
||||
"spl"
|
||||
],
|
||||
"time": "2012-09-19 22:55:18"
|
||||
},
|
||||
{
|
||||
"name": "jms/parser-lib",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/schmittjoh/parser-lib.git",
|
||||
"reference": "4d469a70c6dd03f921cbdeadafbcb261bb23e8b0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/4d469a70c6dd03f921cbdeadafbcb261bb23e8b0",
|
||||
"reference": "4d469a70c6dd03f921cbdeadafbcb261bb23e8b0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"phpoption/phpoption": ">=0.9,<2.0-dev"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"JMS\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"Apache2"
|
||||
],
|
||||
"description": "A library for easily creating recursive-descent parsers.",
|
||||
"time": "2012-11-30 08:11:04"
|
||||
},
|
||||
{
|
||||
"name": "phpoption/phpoption",
|
||||
"version": "1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/schmittjoh/php-option.git",
|
||||
"reference": "1.2.0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/1.2.0",
|
||||
"reference": "1.2.0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"PhpOption\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"Apache2"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johannes M. Schmitt",
|
||||
"email": "schmittjoh@gmail.com",
|
||||
"homepage": "https://github.com/schmittjoh",
|
||||
"role": "Developer of wrapped JMSSerializerBundle"
|
||||
}
|
||||
],
|
||||
"description": "Option Type for PHP",
|
||||
"keywords": [
|
||||
"language",
|
||||
"option",
|
||||
"php",
|
||||
"type"
|
||||
],
|
||||
"time": "2013-03-25 02:51:40"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@@ -166,9 +82,9 @@
|
||||
|
||||
],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {
|
||||
"jms/parser-lib": 20
|
||||
},
|
||||
"stability-flags": [
|
||||
|
||||
],
|
||||
"platform": {
|
||||
"php": ">= 5.3.3"
|
||||
},
|
||||
|
||||
@@ -73,25 +73,12 @@ class EmailLexer extends Lexer
|
||||
protected $previous;
|
||||
|
||||
/**
|
||||
* getName
|
||||
* find
|
||||
*
|
||||
* @param string $type
|
||||
* @param mixed $type
|
||||
*
|
||||
* @return string $name
|
||||
* @throws \InvalidArgumentException
|
||||
* @throws UnexpectedValueException
|
||||
*/
|
||||
public function getName($type)
|
||||
{
|
||||
$ref = new \ReflectionClass($this);
|
||||
foreach ($ref->getConstants() as $name => $value) {
|
||||
if ($value === $type) {
|
||||
return $name;
|
||||
}
|
||||
}
|
||||
|
||||
throw new \InvalidArgumentException(sprintf('There is no token with value %s.', json_encode($type)));
|
||||
}
|
||||
|
||||
public function find($type)
|
||||
{
|
||||
$search = clone $this;
|
||||
|
||||
@@ -23,31 +23,15 @@ class EmailParser
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the given input.
|
||||
* parse
|
||||
*
|
||||
* @param string $str
|
||||
* @param string $context parsing context (allows to produce better error messages)
|
||||
*
|
||||
* @return mixed
|
||||
* @return array
|
||||
*/
|
||||
public function parse($str)
|
||||
{
|
||||
$this->lexer->setInput($str);
|
||||
|
||||
$rs = $this->parseInternal();
|
||||
|
||||
if (null !== $this->lexer->glimpse()) {
|
||||
throw new \Exception('Endo of input');
|
||||
}
|
||||
|
||||
return $rs;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inherit}
|
||||
*/
|
||||
protected function parseInternal()
|
||||
{
|
||||
$this->lexer->moveNext();
|
||||
$this->lexer->moveNext();
|
||||
if ($this->lexer->token['type'] === EmailLexer::S_AT) {
|
||||
|
||||
@@ -1,320 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace tests;
|
||||
|
||||
require_once 'EmailValidator.php';
|
||||
|
||||
|
||||
class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
protected $validator;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
$this->validator = new \EmailValidator\EmailValidator();
|
||||
}
|
||||
|
||||
protected function tearDown()
|
||||
{
|
||||
$this->validator = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getValidEmails
|
||||
*/
|
||||
public function testValidEmails($email)
|
||||
{
|
||||
$this->assertTrue($this->validator->isValid($email));
|
||||
}
|
||||
|
||||
public function getValidEmails()
|
||||
{
|
||||
return array(
|
||||
array('fabien@symfony.com'),
|
||||
array('example@example.co.uk'),
|
||||
array('fabien_potencier@example.fr'),
|
||||
array('example@localhost'),
|
||||
array('example((example))@fakedfake.co.uk'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getExistingEmails
|
||||
*/
|
||||
public function testValidExistingEmails($email)
|
||||
{
|
||||
$this->assertTrue($this->validator->isValid($email, true));
|
||||
}
|
||||
|
||||
public function getExistingEmails()
|
||||
{
|
||||
return array(
|
||||
array('fabien@symfony.com'),
|
||||
array('stloyd@o2.pl'),
|
||||
array('ominic@sayers.cc'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getNonexistingEmails
|
||||
*/
|
||||
public function testValidNonexistingEmails($email)
|
||||
{
|
||||
$this->assertTrue($this->validator->isValid($email, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getNonexistingEmails
|
||||
*/
|
||||
public function testValidNonexistingEmailsWithStrict($email)
|
||||
{
|
||||
$this->assertFalse($this->validator->isValid($email, true, true));
|
||||
}
|
||||
|
||||
public function getNonexistingEmails()
|
||||
{
|
||||
return array(
|
||||
array('example@fakedfake.co.uk'),
|
||||
array('fabien_potencier@non-existing.fr'),
|
||||
array('example@localhost'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getInvalidEmails
|
||||
*/
|
||||
public function testTInvalidEmails($email)
|
||||
{
|
||||
$this->assertFalse($this->validator->isValid($email));
|
||||
}
|
||||
|
||||
public function getInvalidEmails()
|
||||
{
|
||||
return array(
|
||||
array('example.@example.co.uk'),
|
||||
array('(fabien_potencier@example.fr)'),
|
||||
array('example(example)example@example.co.uk'),
|
||||
array('.example@localhost'),
|
||||
array('ex\ample@localhost'),
|
||||
array('example@local\host'),
|
||||
array('example@localhost.'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getInvalidEmailsWithErrors
|
||||
*/
|
||||
public function testInvalidEmailsWithErrorsCheck($errors, $email)
|
||||
{
|
||||
$this->assertFalse($this->validator->isValid($email));
|
||||
|
||||
$this->assertEquals($errors, $this->validator->getErrors());
|
||||
}
|
||||
|
||||
public function getInvalidEmailsWithErrors()
|
||||
{
|
||||
return array(
|
||||
array(array(\EmailValidator\EmailValidator::ERR_NOLOCALPART), '@example.co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_NODOMAIN), 'example@'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOMAINHYPHENEND), 'example@example-.co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOMAINHYPHENEND), 'example@example-'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CONSECUTIVEATS), 'example@@example.co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CONSECUTIVEDOTS), 'example..example@example.co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CONSECUTIVEDOTS), 'example@example..co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_EXPECTING_ATEXT), '<fabien_potencier>@example.fr'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOT_START), '.example@localhost'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOT_START), 'example@.localhost'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOT_END), 'example@localhost.'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_DOT_END), 'example.@example.co.uk'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_UNCLOSEDCOMMENT), '(example@localhost'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_UNCLOSEDQUOTEDSTR), '"example@localhost'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_EXPECTING_ATEXT), 'exa"mple@localhost'),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_EXPECTING_ATEXT), "exampl\ne@example.co.uk"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_EXPECTING_DTEXT), "example@[[]"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_ATEXT_AFTER_CFWS), "exampl\te@example.co.uk"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CR_NO_LF), "example@exa\rmple.co.uk"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CR_NO_LF), "example@[\r]"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CR_NO_LF), "exam\rple@example.co.uk"),
|
||||
array(array(\EmailValidator\EmailValidator::ERR_CR_NO_LF), "\"\r\"@localhost"),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getInvalidEmailsWithWarnings
|
||||
*/
|
||||
public function testInvalidEmailsWithWarningsCheck($warnings, $email)
|
||||
{
|
||||
$this->assertTrue($this->validator->isValid($email, true));
|
||||
|
||||
$this->assertEquals($warnings, $this->validator->getWarnings());
|
||||
}
|
||||
|
||||
public function getInvalidEmailsWithWarnings()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::DEPREC_CFWS_NEAR_AT,
|
||||
),
|
||||
'example @example.co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::DEPREC_CFWS_NEAR_AT,
|
||||
),
|
||||
'example@ example.co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::CFWS_COMMENT,
|
||||
),
|
||||
'example@example(example).co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::CFWS_COMMENT,
|
||||
\EmailValidator\EmailValidator::DEPREC_CFWS_NEAR_AT,
|
||||
),
|
||||
'example(example)@example.co.uk'
|
||||
),
|
||||
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5321_QUOTEDSTRING,
|
||||
\EmailValidator\EmailValidator::CFWS_FWS,
|
||||
),
|
||||
"\"\t\"@example.co.uk"
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5321_ADDRESSLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[127.0.0.1]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5321_ADDRESSLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5321_IPV6DEPRECATED,
|
||||
\EmailValidator\EmailValidator::RFC5321_ADDRESSLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370::]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_MAXGRPS,
|
||||
\EmailValidator\EmailValidator::RFC5321_ADDRESSLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334::]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_2X2XCOLON,
|
||||
\EmailValidator\EmailValidator::RFC5321_ADDRESSLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:1::1::1]'
|
||||
),
|
||||
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_DOMLIT_OBSDTEXT,
|
||||
\EmailValidator\EmailValidator::RFC5322_DOMAINLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
"example@[\n]"
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_DOMAINLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[::1]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_DOMAINLITERAL,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[::123.45.67.178]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_GRPCOUNT,
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_COLONSTRT,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6::2001:0db8:85a3:0000:0000:8a2e:0370:7334]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_BADCHAR,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:z001:0db8:85a3:0000:0000:8a2e:0370:7334]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_IPV6_COLONEND,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:]'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5321_QUOTEDSTRING,
|
||||
),
|
||||
'"example"@example.co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_LOCAL_TOOLONG,
|
||||
),
|
||||
'too_long_localpart_too_long_localpart_too_long_localpart_too_long_localpart@example.co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_LABEL_TOOLONG,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart.co.uk'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_DOMAIN_TOOLONG,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'
|
||||
),
|
||||
array(
|
||||
array(
|
||||
\EmailValidator\EmailValidator::RFC5322_TOOLONG,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_MX_RECORD,
|
||||
\EmailValidator\EmailValidator::DNSWARN_NO_RECORD,
|
||||
),
|
||||
'example@toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpar'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,7 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
||||
array('example@localhost'),
|
||||
array('fab\'ien@symfony.com'),
|
||||
array('example((example))@fakedfake.co.uk'),
|
||||
array('example@faked(fake).co.uk'),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,14 @@
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="EmailValidator Test Suite">
|
||||
<directory>./IsEmail/</directory>
|
||||
<directory>./tests/egulias/Tests/*.Test.php</directory>
|
||||
<exclude>./vendor/</exclude>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
<filter>
|
||||
<blacklist>
|
||||
<directory>../vendor</directory>
|
||||
</blacklist>
|
||||
</filter>
|
||||
</phpunit>
|
||||
|
||||
Reference in New Issue
Block a user