xref: /dokuwiki/_test/tests/inc/mail_isvalid.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
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