mirror of
https://github.com/mrclay/minify.git
synced 2025-08-10 16:14:18 +02:00
port HTTPConditionalGetTest
This commit is contained in:
committed by
Steve Clay
parent
3a9687ad4e
commit
8816e270e6
147
tests/HTTPConditionalGetTest.php
Normal file
147
tests/HTTPConditionalGetTest.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
class HTTPConditionalGetTest extends TestCase
|
||||
{
|
||||
public function TestData()
|
||||
{
|
||||
/*
|
||||
* NOTE: calculate $lmTime as parameter
|
||||
* because dataProviders are executed before tests run,
|
||||
* and in fact each test is new instance of the class, so can't share data
|
||||
* other than parameters.
|
||||
*/
|
||||
|
||||
$lmTime = time() - 900;
|
||||
$gmtTime = gmdate('D, d M Y H:i:s \G\M\T', $lmTime);
|
||||
|
||||
$tests = array(
|
||||
array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has valid If-Modified-Since'
|
||||
,'inm' => null
|
||||
,'ims' => $gmtTime
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has valid If-Modified-Since with trailing semicolon'
|
||||
,'inm' => null
|
||||
,'ims' => $gmtTime . ';'
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has valid ETag (non-encoded version)'
|
||||
,'inm' => "\"badEtagFoo\", \"pri{$lmTime}\""
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime}\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has valid ETag (gzip version)'
|
||||
,'inm' => "\"badEtagFoo\", \"pri{$lmTime};gz\""
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
|
||||
,'isValid' => true
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'no conditional get'
|
||||
,'inm' => null
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has invalid ETag'
|
||||
,'inm' => '"pri' . ($lmTime - 300) . '"'
|
||||
,'ims' => null
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
,array(
|
||||
'lm' => $lmTime,
|
||||
'desc' => 'client has invalid If-Modified-Since'
|
||||
,'inm' => null
|
||||
,'ims' => gmdate('D, d M Y H:i:s \G\M\T', $lmTime - 300)
|
||||
,'exp' => array(
|
||||
'Vary' => 'Accept-Encoding'
|
||||
,'Last-Modified' => $gmtTime
|
||||
,'ETag' => "\"pri{$lmTime};gz\""
|
||||
,'Cache-Control' => 'max-age=0, private'
|
||||
,'isValid' => false
|
||||
)
|
||||
)
|
||||
);
|
||||
return $tests;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider TestData
|
||||
*/
|
||||
public function test_HTTP_ConditionalGet($lmTime, $desc, $inm, $ims, $exp)
|
||||
{
|
||||
|
||||
// setup env
|
||||
if (null === $inm) {
|
||||
unset($_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
} else {
|
||||
$_SERVER['HTTP_IF_NONE_MATCH'] = get_magic_quotes_gpc()
|
||||
? addslashes($inm) :
|
||||
$inm;
|
||||
}
|
||||
|
||||
if (null === $ims) {
|
||||
unset($_SERVER['HTTP_IF_MODIFIED_SINCE']);
|
||||
} else {
|
||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $ims;
|
||||
}
|
||||
|
||||
$cg = new HTTP_ConditionalGet(array(
|
||||
'lastModifiedTime' => $lmTime,
|
||||
'encoding' => 'x-gzip',
|
||||
));
|
||||
$ret = $cg->getHeaders();
|
||||
$ret['isValid'] = $cg->cacheIsValid;
|
||||
|
||||
$this->assertEquals($exp, $ret, $desc);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user