"Added patches from #4413, closes #4413. Thanks maular."

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@6638 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
phpnut 2008-04-09 01:34:25 +00:00
parent de67e299a9
commit d0d001d6dd
2 changed files with 67 additions and 8 deletions

View file

@ -40,7 +40,7 @@
/**
* A valid email address.
*/
define('VALID_EMAIL', '/\\A(?:^([a-z0-9][a-z0-9_\\-\\.\\+]*)@([a-z0-9][a-z0-9\\.\\-]{0,63}\\.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)\\z/i');
define('VALID_EMAIL', "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$/i");
/**
* A valid year (1000-2999).
*/
@ -461,7 +461,7 @@ class Validation extends Object {
}
if (is_null($_this->regex)) {
$_this->regex = '/\\A(?:^([a-z0-9][a-z0-9_\\-\\.\\+]*)@([a-z0-9][a-z0-9\\.\\-]{0,63}\\.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)\\z/i';
$_this->regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,4}|museum|travel)$/i";
}
$return = $_this->_check();

View file

@ -1157,15 +1157,74 @@ class ValidationTestCase extends UnitTestCase {
$this->assertTrue(Validation::email('abc-efg@domain.com'));
$this->assertTrue(Validation::email('abc_efg@domain.com'));
$this->assertTrue(Validation::email('raw@test.ra.ru'));
$this->assertFalse(Validation::email('abc@efg@domain.com'));
$this->assertTrue(Validation::email('abc-efg@domain-hyphened.com'));
$this->assertTrue(Validation::email("p.o'malley@domain.com"));
$this->assertTrue(Validation::email('abc+efg@domain.com'));
$this->assertTrue(Validation::email('abc&efg@domain.com'));
$this->assertTrue(Validation::email('abc.efg@12345.com'));
$this->assertTrue(Validation::email('abc.efg@12345.co.jp'));
$this->assertTrue(Validation::email('abc@g.cn'));
$this->assertTrue(Validation::email('abc@x.com'));
// all ICANN TLDs
$this->assertTrue(Validation::email('abc@example.aero'));
$this->assertTrue(Validation::email('abc@example.asia'));
$this->assertTrue(Validation::email('abc@example.biz'));
$this->assertTrue(Validation::email('abc@example.cat'));
$this->assertTrue(Validation::email('abc@example.com'));
$this->assertTrue(Validation::email('abc@example.coop'));
$this->assertTrue(Validation::email('abc@example.edu'));
$this->assertTrue(Validation::email('abc@example.gov'));
$this->assertTrue(Validation::email('abc@example.info'));
$this->assertTrue(Validation::email('abc@example.int'));
$this->assertTrue(Validation::email('abc@example.jobs'));
$this->assertTrue(Validation::email('abc@example.mil'));
$this->assertTrue(Validation::email('abc@example.mobi'));
$this->assertTrue(Validation::email('abc@example.museum'));
$this->assertTrue(Validation::email('abc@example.name'));
$this->assertTrue(Validation::email('abc@example.net'));
$this->assertTrue(Validation::email('abc@example.org'));
$this->assertTrue(Validation::email('abc@example.pro'));
$this->assertTrue(Validation::email('abc@example.tel'));
$this->assertTrue(Validation::email('abc@example.travel'));
// strange, but technically valid email addresses
$this->assertTrue(Validation::email('S=postmaster/OU=rz/P=uni-frankfurt/A=d400/C=de@gateway.d400.de'));
$this->assertTrue(Validation::email('customer/department=shipping@example.com'));
$this->assertTrue(Validation::email('$A12345@example.com'));
$this->assertTrue(Validation::email('!def!xyz%abc@example.com'));
$this->assertTrue(Validation::email('_somename@example.com'));
// invalid addresses
$this->assertFalse(Validation::email('abc@example'));
$this->assertFalse(Validation::email('abc@example.c'));
$this->assertFalse(Validation::email('abc@example.com.'));
$this->assertFalse(Validation::email('abc.@example.com'));
$this->assertFalse(Validation::email('abc@example..com'));
$this->assertFalse(Validation::email('abc@example.com.a'));
$this->assertFalse(Validation::email('abc@example.toolong'));
$this->assertFalse(Validation::email('abc;@example.com'));
$this->assertFalse(Validation::email('abc@example.com;'));
$this->assertFalse(Validation::email('abc@efg@example.com'));
$this->assertFalse(Validation::email('abc@@example.com'));
$this->assertFalse(Validation::email('abc efg@example.com'));
$this->assertFalse(Validation::email('abc,efg@example.com'));
$this->assertFalse(Validation::email('abc@sub,example.com'));
$this->assertFalse(Validation::email("abc@sub'example.com"));
$this->assertFalse(Validation::email('abc@sub/example.com'));
$this->assertFalse(Validation::email('abc@yahoo!.com'));
$this->assertFalse(Validation::email("Nyrée.surname@example.com"));
$this->assertFalse(Validation::email('abc@example_underscored.com'));
$this->assertFalse(Validation::email('raw@test.ra.ru....com'));
}
/*
//Commented out because test is slow, but it does work
function testEmailDeep() {
$this->assertTrue(Validation::email('abc.efg@cakephp.org', true), 'Expected valid email');
$this->assertFalse(Validation::email('abc.efg@caphpkeinvalid.com', true), 'Expected valid email');
$this->assertTrue(Validation::email('abc.efg@cakephp.org', true));
$this->assertFalse(Validation::email('abc.efg@caphpkeinvalid.com', true));
$this->assertFalse(Validation::email('abc@example.abcd', true));
}
*/
function testEmailCustomRegex() {
$this->assertTrue(Validation::email('abc.efg@cakephp.org', null, '/^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i'));
$this->assertFalse(Validation::email('abc.efg@com.caphpkeinvalid', null, '/^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i'));