2 require_once '_inc.php';
4 require_once 'HTTP/ConditionalGet.php';
6 function test_HTTP_ConditionalGet()
10 $lmTime = time() - 900;
11 $gmtTime = gmdate('D, d M Y H:i:s \G\M\T', $lmTime);
15 'desc' => 'client has valid If-Modified-Since'
19 'Vary' => 'Accept-Encoding'
20 ,'Last-Modified' => $gmtTime
21 ,'ETag' => "\"pri{$lmTime}\""
22 ,'Cache-Control' => 'max-age=0, private'
23 ,'_responseCode' => 'HTTP/1.0 304 Not Modified'
28 'desc' => 'client has valid If-Modified-Since with trailing semicolon'
30 ,'ims' => $gmtTime . ';'
32 'Vary' => 'Accept-Encoding'
33 ,'Last-Modified' => $gmtTime
34 ,'ETag' => "\"pri{$lmTime}\""
35 ,'Cache-Control' => 'max-age=0, private'
36 ,'_responseCode' => 'HTTP/1.0 304 Not Modified'
41 'desc' => 'client has valid ETag (non-encoded version)'
42 ,'inm' => "\"badEtagFoo\", \"pri{$lmTime}\""
45 'Vary' => 'Accept-Encoding'
46 ,'Last-Modified' => $gmtTime
47 ,'ETag' => "\"pri{$lmTime}\""
48 ,'Cache-Control' => 'max-age=0, private'
49 ,'_responseCode' => 'HTTP/1.0 304 Not Modified'
54 'desc' => 'client has valid ETag (gzip version)'
55 ,'inm' => "\"badEtagFoo\", \"pri{$lmTime};gz\""
58 'Vary' => 'Accept-Encoding'
59 ,'Last-Modified' => $gmtTime
60 ,'ETag' => "\"pri{$lmTime};gz\""
61 ,'Cache-Control' => 'max-age=0, private'
62 ,'_responseCode' => 'HTTP/1.0 304 Not Modified'
67 'desc' => 'no conditional get'
71 'Vary' => 'Accept-Encoding'
72 ,'Last-Modified' => $gmtTime
73 ,'ETag' => "\"pri{$lmTime};gz\""
74 ,'Cache-Control' => 'max-age=0, private'
79 'desc' => 'client has invalid ETag'
80 ,'inm' => '"pri' . ($lmTime - 300) . '"'
83 'Vary' => 'Accept-Encoding'
84 ,'Last-Modified' => $gmtTime
85 ,'ETag' => "\"pri{$lmTime};gz\""
86 ,'Cache-Control' => 'max-age=0, private'
91 'desc' => 'client has invalid If-Modified-Since'
93 ,'ims' => gmdate('D, d M Y H:i:s \G\M\T', $lmTime - 300)
95 'Vary' => 'Accept-Encoding'
96 ,'Last-Modified' => $gmtTime
97 ,'ETag' => "\"pri{$lmTime};gz\""
98 ,'Cache-Control' => 'max-age=0, private'
104 foreach ($tests as $test) {
106 if (null === $test['inm']) {
107 unset($_SERVER['HTTP_IF_NONE_MATCH']);
109 $_SERVER['HTTP_IF_NONE_MATCH'] = get_magic_quotes_gpc()
110 ? addslashes($test['inm'])
113 if (null === $test['ims']) {
114 unset($_SERVER['HTTP_IF_MODIFIED_SINCE']);
116 $_SERVER['HTTP_IF_MODIFIED_SINCE'] = $test['ims'];
120 $cg = new HTTP_ConditionalGet(array(
121 'lastModifiedTime' => $lmTime
122 ,'encoding' => 'x-gzip'
124 $ret = $cg->getHeaders();
125 $ret['isValid'] = $cg->cacheIsValid;
127 $passed = assertTrue($exp == $ret, 'HTTP_ConditionalGet : ' . $test['desc']);
129 if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
130 echo "\n--- INM = {$test['inm']} / IMS = {$test['ims']}\n";
131 echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
132 echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
137 test_HTTP_ConditionalGet();