1 bootstrap.test BootstrapPageCacheTestCase::testConditionalRequests()

Test support for requests containing If-Modified-Since and If-None-Match headers.

File

core/modules/simpletest/tests/bootstrap.test, line 117

Class

BootstrapPageCacheTestCase

Code

function testConditionalRequests() {
  config_set('system.core', 'cache', 1);
  config_set('system.core', 'page_cache_background_fetch', 0);
  config_set('system.core', 'page_cache_maximum_age', 300);

  // Fill the cache.
  $test_path = 'system-test/hello-world';
  $this->backdropGet($test_path);

  sleep(5);
  $this->backdropHead($test_path);
  $this->assertEqual($this->backdropGetHeader('X-Backdrop-Cache'), 'HIT', 'Page was cached.');
  $etag = $this->backdropGetHeader('ETag');
  $last_modified = $this->backdropGetHeader('Last-Modified');

  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . $last_modified, 'If-None-Match: ' . $etag));
  $this->assertResponse(304, 'Conditional request returned 304 Not Modified.');

  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . gmdate(DATE_RFC822, strtotime($last_modified)), 'If-None-Match: ' . $etag));
  $this->assertResponse(304, 'Conditional request with obsolete If-Modified-Since date returned 304 Not Modified.');

  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . gmdate(DATE_RFC850, strtotime($last_modified)), 'If-None-Match: ' . $etag));
  $this->assertResponse(304, 'Conditional request with obsolete If-Modified-Since date returned 304 Not Modified.');

  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . $last_modified));
  $this->assertResponse(200, 'Conditional request without If-None-Match returned 200 OK.');
  $this->assertEqual($this->backdropGetHeader('X-Backdrop-Cache'), 'HIT', 'Page was cached.');

  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . gmdate(DATE_RFC1123, strtotime($last_modified) + 1), 'If-None-Match: ' . $etag));
  $this->assertResponse(200, 'Conditional request with new a If-Modified-Since date newer than Last-Modified returned 200 OK.');
  $this->assertEqual($this->backdropGetHeader('X-Backdrop-Cache'), 'HIT', 'Page was cached.');

  $user = $this->backdropCreateUser();
  $this->backdropLogin($user);
  $this->backdropGet($test_path, array(), array('If-Modified-Since: ' . $last_modified, 'If-None-Match: ' . $etag));
  $this->assertResponse(200, 'Conditional request returned 200 OK for authenticated user.');
  $this->assertFalse($this->backdropGetHeader('X-Backdrop-Cache'), 'Absence of Page was not cached.');
}