<?php require_once 'SingletonTestCase.php'; require_once 'session.php'; use webbasics\Session; // Turn on outbut buffering to circumvent "headers already sent" error ob_start(); class SessionTest extends SingletonTestCase { private $session; function getClassName() { return 'webbasics\Session'; } function setUp() { parent::setUp(); $this->session = @Session::getInstance(); } function tearDown() { $_SESSION = array(); } function testSessionStarted() { $this->assertNotEquals('', session_id()); } function testSetSingle() { $this->session->set('foo', 'bar'); $this->assertArrayHasKey('foo', $_SESSION); $this->assertEquals('bar', $_SESSION['foo']); } function testSetMultiple() { $this->session->set(array('foo' => 'bar', 'bar' => 'baz')); $this->assertArrayHasKey('foo', $_SESSION); $this->assertEquals('bar', $_SESSION['foo']); $this->assertArrayHasKey('bar', $_SESSION); $this->assertEquals('baz', $_SESSION['bar']); } function testGetSingle() { $_SESSION['foo'] = 'bar'; $this->assertEquals('bar', $this->session->get('foo')); } function testGetMultiple() { $_SESSION['foo'] = 'bar'; $_SESSION['bar'] = 'baz'; $this->assertEquals(array('bar', 'baz'), $this->session->get(array('foo', 'bar'))); } function testIsRegistered() { $_SESSION['foo'] = 'bar'; $this->assertTrue($this->session->isRegistered('foo')); $this->assertFalse($this->session->isRegistered('bar')); } /** * @depends testIsRegistered */ function testAreRegistered() { $_SESSION['foo'] = 'bar'; $_SESSION['bar'] = 'baz'; $this->assertTrue($this->session->areRegistered(array('foo', 'bar'))); $this->assertFalse($this->session->areRegistered(array('foo', 'baz'))); } function testRegenerateId() { $old_id = session_id(); $this->session->regenerateId(); $this->assertNotEquals($old_id, session_id()); // Disable output buffering to show progress on other tests @ob_end_flush(); } function testClear() { $_SESSION['foo'] = 'bar'; $this->session->clear(); $this->assertEmpty($_SESSION); } function testDestroySimple() { $this->session->destroy(); $this->assertEquals('', session_id()); } /** * @depends testClear */ function testDestroyClear() { $_SESSION['foo'] = 'bar'; $this->session->destroy(true); $this->assertEmpty($_SESSION); $this->assertEquals('', session_id()); } } ?>