Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

119 lines (108 sloc) 4.742 kb
<?php
/**
* Test Case for HTTP_Header_Cache
*
* Id$
*/
require_once 'PHPUnit/Framework/TestCase.php';
require_once 'HTTP/Header/Cache.php';
class HTTP_Header_CacheTest extends PHPUnit_Framework_TestCase
{
function setUp()
{
$this->testScript = 'http://local/www/mike/pear/HTTP_Header/tests/cacheresponse.php';
}
function testHTTP_Header_Cache()
{
$this->assertTrue(is_a(new HTTP_Header_Cache, 'HTTP_Header_Cache'));
}
function testgetCacheStart()
{
$c = &new HTTP_Header_Cache;
$this->assertEquals(time(), $c->getCacheStart());
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = HTTP::Date(strtotime('yesterday'));
$this->assertEquals($_SERVER['HTTP_IF_MODIFIED_SINCE'], HTTP::Date($c->getCacheStart()));
unset($c, $_SERVER['HTTP_IF_MODIFIED_SINCE']);
}
function testisOlderThan()
{
$c = &new HTTP_Header_Cache;
$this->assertTrue($c->isOlderThan(1, 'second'));
$this->assertTrue($c->isOlderThan(1, 'hour'));
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = HTTP::Date(time() - 3);
$this->assertTrue($c->isOlderThan(1, 'second'));
unset($c, $_SERVER['HTTP_IF_MODIFIED_SINCE']);
}
function testisCached()
{
$c = &new HTTP_Header_Cache;
$this->assertFalse($c->isCached(), 'no last modified');
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = HTTP::Date(strtotime('yesterday'));
$this->assertTrue($c->isCached(), 'last modified header');
$this->assertFalse($c->isCached(time()), 'last modified header (yesterday) and param (now)');
$this->assertTrue($c->isCached(strtotime('last year')), 'last modified header (yesterday) and param (last year)');
unset($c, $_SERVER['HTTP_IF_MODIFIED_SINCE']);
}
function testexitIfCached()
{
require_once 'HTTP/Request.php';
$r = &new HTTP_Request($this->testScript);
$r->setMethod(HTTP_REQUEST_METHOD_GET);
$r->addHeader('If-Modified-Since', HTTP::Date());
$r->sendRequest();
$this->assertEquals(304, $r->getResponseCode(), 'HTTP 304 Not Modified');
$r->addHeader('If-Modified-Since', HTTP::Date(strtotime('yesterday')));
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok');
unset($r);
}
function testget()
{
require_once 'HTTP/Request.php';
$r = &new HTTP_Request($this->testScript);
$r->setMethod(HTTP_REQUEST_METHOD_GET);
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (simple plain GET)');
$r->addHeader('If-Modified-Since', $r->getResponseHeader('last-modified'));
sleep(3);
$r->sendRequest();
$this->assertEquals(304, $r->getResponseCode(), 'HTTP 304 Not Modified (GET with If-Modified-Since set to Last-Modified of prior request');
unset($r);
}
function testhead()
{
require_once 'HTTP/Request.php';
$r = &new HTTP_Request($this->testScript);
$r->setMethod(HTTP_REQUEST_METHOD_HEAD);
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (simple plain GET)');
$r->addHeader('If-Modified-Since', $r->getResponseHeader('last-modified'));
sleep(3);
$r->sendRequest();
$this->assertEquals(304, $r->getResponseCode(), 'HTTP 304 Not Modified (GET with If-Modified-Since set to Last-Modified of prior request');
unset($r);
}
function testpost()
{
require_once 'HTTP/Request.php';
$r = &new HTTP_Request($this->testScript);
$r->setMethod(HTTP_REQUEST_METHOD_GET);
$r->sendRequest();
$lm = $r->getResponseHeader('last-modified');
$r->setMethod(HTTP_REQUEST_METHOD_POST);
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (POST without If-Modified-Since)');
$r->addHeader('If-Modified-Since', HTTP::Date(strtotime('yesterday')));
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (POST with If-Modified-Since == yesterday)');
$r->addHeader('If-Modified-Since', HTTP::Date(time() - 3));
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (POST with If-Modified-Since == now)');
$r->addHeader('If-Modified-Since', HTTP::Date($lm));
sleep(3);
$r->sendRequest();
$this->assertEquals(200, $r->getResponseCode(), 'HTTP 200 Ok (POST with If-Modified-Since == Last-Modified)');
$this->assertEquals(HTTP::Date(), $r->getResponseHeader('last-modified'), 'POST time() == Last-Modified');
unset($r);
}
}
Jump to Line
Something went wrong with that request. Please try again.