You are here

class PhpBridgeSessionStorageTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php \Symfony\Component\HttpFoundation\Tests\Session\Storage\PhpBridgeSessionStorageTest

Test class for PhpSessionStorage.

@author Drak <drak@zikula.org>

These tests require separate processes.

@runTestsInSeparateProcesses @preserveGlobalState disabled

Hierarchy

  • class \Symfony\Component\HttpFoundation\Tests\Session\Storage\PhpBridgeSessionStorageTest extends \Symfony\Component\HttpFoundation\Tests\Session\Storage\PHPUnit_Framework_TestCase

Expanded class hierarchy of PhpBridgeSessionStorageTest

File

vendor/symfony/http-foundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php, line 27

Namespace

Symfony\Component\HttpFoundation\Tests\Session\Storage
View source
class PhpBridgeSessionStorageTest extends \PHPUnit_Framework_TestCase {
  private $savePath;
  protected function setUp() {
    $this
      ->iniSet('session.save_handler', 'files');
    $this
      ->iniSet('session.save_path', $this->savePath = sys_get_temp_dir() . '/sf2test');
    if (!is_dir($this->savePath)) {
      mkdir($this->savePath);
    }
  }
  protected function tearDown() {
    session_write_close();
    array_map('unlink', glob($this->savePath . '/*'));
    if (is_dir($this->savePath)) {
      rmdir($this->savePath);
    }
    $this->savePath = null;
  }

  /**
   * @return PhpBridgeSessionStorage
   */
  protected function getStorage() {
    $storage = new PhpBridgeSessionStorage();
    $storage
      ->registerBag(new AttributeBag());
    return $storage;
  }
  public function testPhpSession53() {
    if (PHP_VERSION_ID >= 50400) {
      $this
        ->markTestSkipped('Test skipped, for PHP 5.3 only.');
    }
    $storage = $this
      ->getStorage();
    $this
      ->assertFalse(isset($_SESSION));
    $this
      ->assertFalse($storage
      ->getSaveHandler()
      ->isActive());
    session_start();
    $this
      ->assertTrue(isset($_SESSION));

    // in PHP 5.3 we cannot reliably tell if a session has started
    $this
      ->assertFalse($storage
      ->getSaveHandler()
      ->isActive());

    // PHP session might have started, but the storage driver has not, so false is correct here
    $this
      ->assertFalse($storage
      ->isStarted());
    $key = $storage
      ->getMetadataBag()
      ->getStorageKey();
    $this
      ->assertFalse(isset($_SESSION[$key]));
    $storage
      ->start();
    $this
      ->assertTrue(isset($_SESSION[$key]));
  }
  public function testPhpSession54() {
    if (PHP_VERSION_ID < 50400) {
      $this
        ->markTestSkipped('Test skipped, for PHP 5.4 only.');
    }
    $storage = $this
      ->getStorage();
    $this
      ->assertFalse($storage
      ->getSaveHandler()
      ->isActive());
    $this
      ->assertFalse($storage
      ->isStarted());
    session_start();
    $this
      ->assertTrue(isset($_SESSION));

    // in PHP 5.4 we can reliably detect a session started
    $this
      ->assertTrue($storage
      ->getSaveHandler()
      ->isActive());

    // PHP session might have started, but the storage driver has not, so false is correct here
    $this
      ->assertFalse($storage
      ->isStarted());
    $key = $storage
      ->getMetadataBag()
      ->getStorageKey();
    $this
      ->assertFalse(isset($_SESSION[$key]));
    $storage
      ->start();
    $this
      ->assertTrue(isset($_SESSION[$key]));
  }
  public function testClear() {
    $storage = $this
      ->getStorage();
    session_start();
    $_SESSION['drak'] = 'loves symfony';
    $storage
      ->getBag('attributes')
      ->set('symfony', 'greatness');
    $key = $storage
      ->getBag('attributes')
      ->getStorageKey();
    $this
      ->assertEquals($_SESSION[$key], array(
      'symfony' => 'greatness',
    ));
    $this
      ->assertEquals($_SESSION['drak'], 'loves symfony');
    $storage
      ->clear();
    $this
      ->assertEquals($_SESSION[$key], array());
    $this
      ->assertEquals($_SESSION['drak'], 'loves symfony');
  }

}

Members