1<?php
2/**
3 * @author     Jan Schneider <jan@horde.org>
4 * @license    http://www.horde.org/licenses/lgpl21 LGPL 2.1
5 * @category   Horde
6 * @package    Horde_SessionHandler
7 * @subpackage UnitTests
8 */
9class Horde_SessionHandler_Storage_Base extends Horde_Test_Case
10{
11    protected static $handler;
12    protected static $dir;
13
14    protected function _write()
15    {
16        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
17        $this->assertSame('', self::$handler->read('sessionid'));
18        $this->assertTrue(self::$handler->write('sessionid', 'sessiondata'));
19    }
20
21    protected function _read()
22    {
23        $this->assertEquals('sessiondata', self::$handler->read('sessionid'));
24    }
25
26    protected function _reopen()
27    {
28        $this->assertTrue(self::$handler->close());
29        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
30        $this->assertEquals('sessiondata', self::$handler->read('sessionid'));
31        $this->assertTrue(self::$handler->close());
32    }
33
34    protected function _list()
35    {
36        $this->assertTrue(self::$handler->close());
37        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
38        self::$handler->read('sessionid2');
39        $this->assertTrue(self::$handler->write('sessionid2', 'sessiondata2'));
40        /* List while session is active. */
41        $ids = self::$handler->getSessionIDs();
42        sort($ids);
43        $this->assertEquals(array('sessionid', 'sessionid2'), $ids);
44        $this->assertTrue(self::$handler->close());
45
46        /* List while session is inactive. */
47        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
48        $ids = self::$handler->getSessionIDs();
49        sort($ids);
50        $this->assertEquals(array('sessionid', 'sessionid2'), $ids);
51        $this->assertTrue(self::$handler->close());
52    }
53
54    protected function _destroy()
55    {
56        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
57        self::$handler->read('sessionid2');
58        $this->assertTrue(self::$handler->destroy('sessionid2'));
59        $this->assertEquals(array('sessionid'),
60                            self::$handler->getSessionIDs());
61    }
62
63    protected function _gc()
64    {
65        $this->assertTrue(self::$handler->open(self::$dir, 'sessionname'));
66        $this->assertTrue(self::$handler->gc(-1));
67        $this->assertEquals(array(),
68                            self::$handler->getSessionIDs());
69    }
70
71    public static function setUpBeforeClass()
72    {
73        self::$dir = Horde_Util::createTempDir();
74    }
75
76    public static function tearDownAfterClass()
77    {
78        self::$handler = null;
79    }
80}
81