]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_ConditionalGet.php
Added minify plugin
[quix0rs-gnu-social.git] / plugins / Minify / extlib / minify / min_unit_tests / test_HTTP_ConditionalGet.php
1 <?php
2 require_once '_inc.php';
3
4 require_once 'HTTP/ConditionalGet.php';
5
6 function test_HTTP_ConditionalGet()
7 {
8     global $thisDir;
9     
10     $lmTime = time() - 900;
11     $gmtTime = gmdate('D, d M Y H:i:s \G\M\T', $lmTime);
12     
13     $tests = array(
14         array(
15             'desc' => 'client has valid If-Modified-Since'
16             ,'inm' => null
17             ,'ims' => $gmtTime
18             ,'exp' => array(
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'
24                 ,'isValid' => true
25             )
26         )
27         ,array(
28             'desc' => 'client has valid If-Modified-Since with trailing semicolon'
29             ,'inm' => null
30             ,'ims' => $gmtTime . ';'
31             ,'exp' => array(
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'
37                 ,'isValid' => true
38             )
39         )
40         ,array(
41             'desc' => 'client has valid ETag (non-encoded version)'
42             ,'inm' => "\"badEtagFoo\", \"pri{$lmTime}\""
43             ,'ims' => null
44             ,'exp' => array(
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'
50                 ,'isValid' => true
51             )
52         )
53         ,array(
54             'desc' => 'client has valid ETag (gzip version)'
55             ,'inm' => "\"badEtagFoo\", \"pri{$lmTime};gz\""
56             ,'ims' => null
57             ,'exp' => array(
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'
63                 ,'isValid' => true
64             )
65         )
66         ,array(
67             'desc' => 'no conditional get'
68             ,'inm' => null
69             ,'ims' => null
70             ,'exp' => array(
71                 'Vary' => 'Accept-Encoding'
72                 ,'Last-Modified' => $gmtTime
73                 ,'ETag' => "\"pri{$lmTime};gz\""
74                 ,'Cache-Control' => 'max-age=0, private'
75                 ,'isValid' => false
76             )
77         )
78         ,array(
79             'desc' => 'client has invalid ETag'
80             ,'inm' => '"pri' . ($lmTime - 300) . '"'
81             ,'ims' => null
82             ,'exp' => array(
83                 'Vary' => 'Accept-Encoding'
84                 ,'Last-Modified' => $gmtTime
85                 ,'ETag' => "\"pri{$lmTime};gz\""
86                 ,'Cache-Control' => 'max-age=0, private'
87                 ,'isValid' => false
88             )
89         )
90         ,array(
91             'desc' => 'client has invalid If-Modified-Since'
92             ,'inm' => null
93             ,'ims' => gmdate('D, d M Y H:i:s \G\M\T', $lmTime - 300)
94             ,'exp' => array(
95                 'Vary' => 'Accept-Encoding'
96                 ,'Last-Modified' => $gmtTime
97                 ,'ETag' => "\"pri{$lmTime};gz\""
98                 ,'Cache-Control' => 'max-age=0, private'
99                 ,'isValid' => false
100             )
101         )
102     );
103     
104     foreach ($tests as $test) {
105         // setup env
106         if (null === $test['inm']) {
107             unset($_SERVER['HTTP_IF_NONE_MATCH']);
108         } else {
109             $_SERVER['HTTP_IF_NONE_MATCH'] = get_magic_quotes_gpc()
110                 ? addslashes($test['inm'])
111                 : $test['inm'];
112         }
113         if (null === $test['ims']) {
114             unset($_SERVER['HTTP_IF_MODIFIED_SINCE']);
115         } else {
116             $_SERVER['HTTP_IF_MODIFIED_SINCE'] = $test['ims'];
117         }
118         $exp = $test['exp'];
119         
120         $cg = new HTTP_ConditionalGet(array(
121             'lastModifiedTime' => $lmTime
122             ,'encoding' => 'x-gzip'
123         ));
124         $ret = $cg->getHeaders();
125         $ret['isValid'] = $cg->cacheIsValid;
126         
127         $passed = assertTrue($exp == $ret, 'HTTP_ConditionalGet : ' . $test['desc']);
128         
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";
133         }
134     }
135 }
136
137 test_HTTP_ConditionalGet();