1*f8369d7dSTobias Sarnowski<?php 2*f8369d7dSTobias Sarnowski// use no mbstring help here 3*f8369d7dSTobias Sarnowskirequire_once DOKU_INC.'inc/init.php'; 4*f8369d7dSTobias Sarnowski 5*f8369d7dSTobias Sarnowskiclass mail_isvalid extends DokuWikiTest { 6*f8369d7dSTobias Sarnowski 7*f8369d7dSTobias Sarnowski 8*f8369d7dSTobias Sarnowski function test1(){ 9*f8369d7dSTobias Sarnowski $tests = array(); 10*f8369d7dSTobias Sarnowski 11*f8369d7dSTobias Sarnowski // our own tests 12*f8369d7dSTobias Sarnowski $tests[] = array('bugs@php.net',true); 13*f8369d7dSTobias Sarnowski $tests[] = array('~someone@somewhere.com',true); 14*f8369d7dSTobias Sarnowski $tests[] = array('no+body.here@somewhere.com.au',true); 15*f8369d7dSTobias Sarnowski $tests[] = array('username+tag@domain.com',true); // FS#1447 16*f8369d7dSTobias Sarnowski $tests[] = array("rfc2822+allthesechars_#*!'`/-={}are.legal@somewhere.com.au",true); 17*f8369d7dSTobias Sarnowski $tests[] = array('_foo@test.com',true); // FS#1049 18*f8369d7dSTobias Sarnowski $tests[] = array('bugs@php.net1',true); // new ICAN rulez seem to allow this 19*f8369d7dSTobias Sarnowski $tests[] = array('.bugs@php.net1',false); 20*f8369d7dSTobias Sarnowski $tests[] = array('bu..gs@php.net',false); 21*f8369d7dSTobias Sarnowski $tests[] = array('bugs@php..net',false); 22*f8369d7dSTobias Sarnowski $tests[] = array('bugs@.php.net',false); 23*f8369d7dSTobias Sarnowski $tests[] = array('bugs@php.net.',false); 24*f8369d7dSTobias Sarnowski $tests[] = array('bu(g)s@php.net1',false); 25*f8369d7dSTobias Sarnowski $tests[] = array('bu[g]s@php.net1',false); 26*f8369d7dSTobias Sarnowski $tests[] = array('somebody@somewhere.museum',true); 27*f8369d7dSTobias Sarnowski $tests[] = array('somebody@somewhere.travel',true); 28*f8369d7dSTobias Sarnowski $tests[] = array('root@[2010:fb:fdac::311:2101]',true); 29*f8369d7dSTobias Sarnowski $tests[] = array('test@example', true); // we allow local addresses 30*f8369d7dSTobias Sarnowski 31*f8369d7dSTobias Sarnowski // tests from http://code.google.com/p/php-email-address-validation/ below 32*f8369d7dSTobias Sarnowski 33*f8369d7dSTobias Sarnowski $tests[] = array('test@example.com', true); 34*f8369d7dSTobias Sarnowski $tests[] = array('TEST@example.com', true); 35*f8369d7dSTobias Sarnowski $tests[] = array('1234567890@example.com', true); 36*f8369d7dSTobias Sarnowski $tests[] = array('test+test@example.com', true); 37*f8369d7dSTobias Sarnowski $tests[] = array('test-test@example.com', true); 38*f8369d7dSTobias Sarnowski $tests[] = array('t*est@example.com', true); 39*f8369d7dSTobias Sarnowski $tests[] = array('+1~1+@example.com', true); 40*f8369d7dSTobias Sarnowski $tests[] = array('{_test_}@example.com', true); 41*f8369d7dSTobias Sarnowski $tests[] = array('"[[ test ]]"@example.com', true); 42*f8369d7dSTobias Sarnowski $tests[] = array('test.test@example.com', true); 43*f8369d7dSTobias Sarnowski $tests[] = array('test."test"@example.com', true); 44*f8369d7dSTobias Sarnowski $tests[] = array('"test@test"@example.com', true); 45*f8369d7dSTobias Sarnowski $tests[] = array('test@123.123.123.123', true); 46*f8369d7dSTobias Sarnowski $tests[] = array('test@[123.123.123.123]', true); 47*f8369d7dSTobias Sarnowski $tests[] = array('test@example.example.com', true); 48*f8369d7dSTobias Sarnowski $tests[] = array('test@example.example.example.com', true); 49*f8369d7dSTobias Sarnowski 50*f8369d7dSTobias Sarnowski $tests[] = array('test.example.com', false); 51*f8369d7dSTobias Sarnowski $tests[] = array('test.@example.com', false); 52*f8369d7dSTobias Sarnowski $tests[] = array('test..test@example.com', false); 53*f8369d7dSTobias Sarnowski $tests[] = array('.test@example.com', false); 54*f8369d7dSTobias Sarnowski $tests[] = array('test@test@example.com', false); 55*f8369d7dSTobias Sarnowski $tests[] = array('test@@example.com', false); 56*f8369d7dSTobias Sarnowski $tests[] = array('-- test --@example.com', false); // No spaces allowed in local part 57*f8369d7dSTobias Sarnowski $tests[] = array('[test]@example.com', false); // Square brackets only allowed within quotes 58*f8369d7dSTobias Sarnowski $tests[] = array('"test\test"@example.com', false); // Quotes cannot contain backslash 59*f8369d7dSTobias Sarnowski $tests[] = array('"test"test"@example.com', false); // Quotes cannot be nested 60*f8369d7dSTobias Sarnowski $tests[] = array('()[]\;:,<>@example.com', false); // Disallowed Characters 61*f8369d7dSTobias Sarnowski $tests[] = array('test@.', false); 62*f8369d7dSTobias Sarnowski $tests[] = array('test@example.', false); 63*f8369d7dSTobias Sarnowski $tests[] = array('test@.org', false); 64*f8369d7dSTobias Sarnowski $tests[] = array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false); // 64 characters is maximum length for local part. This is 65. 65*f8369d7dSTobias Sarnowski $tests[] = array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false); // 255 characters is maximum length for domain. This is 256. 66*f8369d7dSTobias Sarnowski $tests[] = array('test@[123.123.123.123', false); 67*f8369d7dSTobias Sarnowski $tests[] = array('test@123.123.123.123]', false); 68*f8369d7dSTobias Sarnowski 69*f8369d7dSTobias Sarnowski 70*f8369d7dSTobias Sarnowski foreach($tests as $test){ 71*f8369d7dSTobias Sarnowski $info = 'Testing '.$test[0]; 72*f8369d7dSTobias Sarnowski 73*f8369d7dSTobias Sarnowski if($test[1]){ 74*f8369d7dSTobias Sarnowski $this->assertTrue((bool) mail_isvalid($test[0]), $info); 75*f8369d7dSTobias Sarnowski }else{ 76*f8369d7dSTobias Sarnowski $this->assertFalse((bool) mail_isvalid($test[0]), $info); 77*f8369d7dSTobias Sarnowski } 78*f8369d7dSTobias Sarnowski } 79*f8369d7dSTobias Sarnowski } 80*f8369d7dSTobias Sarnowski 81*f8369d7dSTobias Sarnowski} 82*f8369d7dSTobias Sarnowski//Setup VIM: ex: et ts=4 : 83