public function FilesystemCacheTest::testLifetime

File

drupal/core/vendor/doctrine/common/tests/Doctrine/Tests/Common/Cache/FilesystemCacheTest.php, line 28

Class

FilesystemCacheTest
@group DCOM-101

Namespace

Doctrine\Tests\Common\Cache

Code

public function testLifetime() {
  $cache = $this
    ->_getCacheDriver();

  // Test save
  $cache
    ->save('test_key', 'testing this out', 10);

  // Test contains to test that save() worked
  $this
    ->assertTrue($cache
    ->contains('test_key'));

  // Test fetch
  $this
    ->assertEquals('testing this out', $cache
    ->fetch('test_key'));

  // access private methods
  $getFilename = new \ReflectionMethod($cache, 'getFilename');
  $getNamespacedId = new \ReflectionMethod($cache, 'getNamespacedId');
  $getFilename
    ->setAccessible(true);
  $getNamespacedId
    ->setAccessible(true);
  $id = $getNamespacedId
    ->invoke($cache, 'test_key');
  $filename = $getFilename
    ->invoke($cache, $id);
  $data = '';
  $lifetime = 0;
  $resource = fopen($filename, "r");
  if (false !== ($line = fgets($resource))) {
    $lifetime = (int) $line;
  }
  while (false !== ($line = fgets($resource))) {
    $data .= $line;
  }
  $this
    ->assertNotEquals(0, $lifetime, "previous lifetime could not be loaded");

  // update lifetime
  $lifetime = $lifetime - 20;
  file_put_contents($filename, $lifetime . PHP_EOL . $data);

  // test expired data
  $this
    ->assertFalse($cache
    ->contains('test_key'));
  $this
    ->assertFalse($cache
    ->fetch('test_key'));
}