| 1 |
lars |
1 |
--TEST--
|
|
|
2 |
email.phpt: Unit tests for
|
|
|
3 |
--FILE--
|
|
|
4 |
<?php
|
|
|
5 |
// $Id: email.phpt 276490 2009-02-26 09:32:16Z amir $
|
|
|
6 |
// Validate test script
|
|
|
7 |
$noYes = array('NO', 'YES');
|
|
|
8 |
require 'Validate.php';
|
|
|
9 |
|
|
|
10 |
echo "Test Validate_Email\n";
|
|
|
11 |
|
|
|
12 |
$emails = array(
|
|
|
13 |
// Try dns lookup
|
|
|
14 |
array('pear-general@lists.php.net', true), // OK
|
|
|
15 |
array('example@fluffffffrefrffrfrfrfrfrfr.is', false), // OK
|
|
|
16 |
// with out the dns lookup
|
|
|
17 |
'example@fluffffffrefrffrfrfrfrfrfr.is', // OK
|
|
|
18 |
|
|
|
19 |
array('davidc@php.net', array('fullTLDValidation' => true, 'VALIDATE_GTLD_EMAILS' => true)),
|
|
|
20 |
array('example (though bad)@example.com', array('use_rfc822' => true)), // OK
|
|
|
21 |
'bugme@not./com', // OK
|
|
|
22 |
|
|
|
23 |
// Some none english chars, those should fail until we fix the IDN stuff
|
|
|
24 |
'hæjjæ@homms.com', // NOK
|
|
|
25 |
'þæöð@example.com', // NOK
|
|
|
26 |
'postmaster@tüv.de', // NOK
|
|
|
27 |
|
|
|
28 |
// Test for various ways with _
|
|
|
29 |
'mark_@example.com', // OK
|
|
|
30 |
'_mark@example.com', // OK
|
|
|
31 |
'mark_foo@example.com', // OK
|
|
|
32 |
|
|
|
33 |
// Test for various ways with -
|
|
|
34 |
'mark-@example.com', // OK
|
|
|
35 |
'-mark@example.com', // OK
|
|
|
36 |
'mark-foo@example.com', // OK
|
|
|
37 |
|
|
|
38 |
// Test for various ways with .
|
|
|
39 |
'mark.@example.com', // NOK
|
|
|
40 |
'.mark@example.com', // NOK
|
|
|
41 |
'mark.foo@example.com', // OK
|
|
|
42 |
|
|
|
43 |
// Test for various ways with ,
|
|
|
44 |
'mark,@example.com', // NOK
|
|
|
45 |
',mark@example.com', // NOK
|
|
|
46 |
'mark,foo@example.com', // NOK
|
|
|
47 |
|
|
|
48 |
// Test for various ways with :
|
|
|
49 |
'mark:@example.com', // NOK
|
|
|
50 |
':mark@example.com', // NOK
|
|
|
51 |
'mark:foo@example.com', // NOK
|
|
|
52 |
|
|
|
53 |
// Test for various ways with ;
|
|
|
54 |
'mark;@example.com', // NOK
|
|
|
55 |
';mark@example.com', // NOK
|
|
|
56 |
'mark;foo@example.com', // NOK
|
|
|
57 |
|
|
|
58 |
// Test for various ways with |
|
|
|
59 |
'mark|@example.com', // OK
|
|
|
60 |
'|mark@example.com', // OK
|
|
|
61 |
'mark|foo@example.com', // OK
|
|
|
62 |
|
|
|
63 |
// Test for various ways with double @
|
|
|
64 |
'mark@home@example.com', // NOK
|
|
|
65 |
'mark@example.home@com', // NOK
|
|
|
66 |
'mark@example.com@home', // NOK
|
|
|
67 |
|
|
|
68 |
// Killers ' tests
|
|
|
69 |
'ha"ho@example.com', // NOK
|
|
|
70 |
'<ha la la>blah</ha>@example.com', // NOK
|
|
|
71 |
'<hablahha>@example.com', // NOK
|
|
|
72 |
'"<ha la la>blah</ha>"@example.com', // OK
|
|
|
73 |
'" "@example.com', // NOK
|
|
|
74 |
'@example.com', // NOK
|
|
|
75 |
|
|
|
76 |
// Minus ' tests (#5804)
|
|
|
77 |
'minus@example-minus.com', // OK
|
|
|
78 |
'minus@example.co-m', // OK
|
|
|
79 |
'mi-nus@example-minus.co-m', // OK
|
|
|
80 |
'minus@example-.com', // NOK
|
|
|
81 |
'minus@-example.com', // NOK
|
|
|
82 |
'minus@-.com', // NOK
|
|
|
83 |
'minus@example.-com', // NOK
|
|
|
84 |
'minus@-example.com-', // NOK
|
|
|
85 |
|
|
|
86 |
// IP domain
|
|
|
87 |
'ip@127.0.0.1', // OK
|
|
|
88 |
'"the ip"@[127.0.0.1]', // OK
|
|
|
89 |
'ip@127.0.333.1', // NOK
|
|
|
90 |
'ip@[277.0.0.1]', // NOK
|
|
|
91 |
'ip@[127.0.0.1', // NOK
|
|
|
92 |
'ip@127.0.0.1]' // NOK
|
|
|
93 |
);
|
|
|
94 |
|
|
|
95 |
list($version) = explode(".", phpversion(), 2);
|
|
|
96 |
foreach ($emails as $email) {
|
|
|
97 |
if (is_array($email)) {
|
|
|
98 |
echo "{$email[0]}:";
|
|
|
99 |
if (!is_array($email[1])) {
|
|
|
100 |
echo " with". ($email[1] ? '' : 'out') . ' domain check :';
|
|
|
101 |
}
|
|
|
102 |
echo ' ' . $noYes[Validate::email($email[0], $email[1])]."\n";
|
|
|
103 |
} else {
|
|
|
104 |
echo "{$email}: ";
|
|
|
105 |
if ((int)$version > 4) {
|
|
|
106 |
try {
|
|
|
107 |
echo $noYes[Validate::email($email)]."\n";
|
|
|
108 |
} catch (Exception $e) {
|
|
|
109 |
echo $e->getMessage()."\n";
|
|
|
110 |
}
|
|
|
111 |
} else {
|
|
|
112 |
echo $noYes[Validate::email($email)]."\n";
|
|
|
113 |
}
|
|
|
114 |
}
|
|
|
115 |
}
|
|
|
116 |
?>
|
|
|
117 |
--EXPECT--
|
|
|
118 |
Test Validate_Email
|
|
|
119 |
pear-general@lists.php.net: with domain check : YES
|
|
|
120 |
example@fluffffffrefrffrfrfrfrfrfr.is: without domain check : YES
|
|
|
121 |
example@fluffffffrefrffrfrfrfrfrfr.is: YES
|
|
|
122 |
davidc@php.net: YES
|
|
|
123 |
example (though bad)@example.com: YES
|
|
|
124 |
bugme@not./com: YES
|
|
|
125 |
hæjjæ@homms.com: NO
|
|
|
126 |
þæöð@example.com: NO
|
|
|
127 |
postmaster@tüv.de: NO
|
|
|
128 |
mark_@example.com: YES
|
|
|
129 |
_mark@example.com: YES
|
|
|
130 |
mark_foo@example.com: YES
|
|
|
131 |
mark-@example.com: YES
|
|
|
132 |
-mark@example.com: YES
|
|
|
133 |
mark-foo@example.com: YES
|
|
|
134 |
mark.@example.com: NO
|
|
|
135 |
.mark@example.com: NO
|
|
|
136 |
mark.foo@example.com: YES
|
|
|
137 |
mark,@example.com: NO
|
|
|
138 |
,mark@example.com: NO
|
|
|
139 |
mark,foo@example.com: NO
|
|
|
140 |
mark:@example.com: NO
|
|
|
141 |
:mark@example.com: NO
|
|
|
142 |
mark:foo@example.com: NO
|
|
|
143 |
mark;@example.com: NO
|
|
|
144 |
;mark@example.com: NO
|
|
|
145 |
mark;foo@example.com: NO
|
|
|
146 |
mark|@example.com: YES
|
|
|
147 |
|mark@example.com: YES
|
|
|
148 |
mark|foo@example.com: YES
|
|
|
149 |
mark@home@example.com: NO
|
|
|
150 |
mark@example.home@com: NO
|
|
|
151 |
mark@example.com@home: NO
|
|
|
152 |
ha"ho@example.com: NO
|
|
|
153 |
<ha la la>blah</ha>@example.com: NO
|
|
|
154 |
<hablahha>@example.com: NO
|
|
|
155 |
"<ha la la>blah</ha>"@example.com: YES
|
|
|
156 |
" "@example.com: NO
|
|
|
157 |
@example.com: NO
|
|
|
158 |
minus@example-minus.com: YES
|
|
|
159 |
minus@example.co-m: YES
|
|
|
160 |
mi-nus@example-minus.co-m: YES
|
|
|
161 |
minus@example-.com: NO
|
|
|
162 |
minus@-example.com: NO
|
|
|
163 |
minus@-.com: NO
|
|
|
164 |
minus@example.-com: NO
|
|
|
165 |
minus@-example.com-: NO
|
|
|
166 |
ip@127.0.0.1: YES
|
|
|
167 |
"the ip"@[127.0.0.1]: YES
|
|
|
168 |
ip@127.0.333.1: NO
|
|
|
169 |
ip@[277.0.0.1]: NO
|
|
|
170 |
ip@[127.0.0.1: NO
|
|
|
171 |
ip@127.0.0.1]: NO
|