1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Symfony\Component\HttpFoundation\Tests\Session\Storage;
13:
14: use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
15:
16: 17: 18:
19: class MetadataBagTest extends \PHPUnit_Framework_TestCase
20: {
21: 22: 23:
24: protected $bag;
25:
26: 27: 28:
29: protected $array = array();
30:
31: protected function setUp()
32: {
33: $this->bag = new MetadataBag();
34: $this->array = array(MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 0);
35: $this->bag->initialize($this->array);
36: }
37:
38: protected function tearDown()
39: {
40: $this->array = array();
41: $this->bag = null;
42: }
43:
44: public function testInitialize()
45: {
46: $sessionMetadata = array();
47:
48: $bag1 = new MetadataBag();
49: $bag1->initialize($sessionMetadata);
50: $this->assertGreaterThanOrEqual(time(), $bag1->getCreated());
51: $this->assertEquals($bag1->getCreated(), $bag1->getLastUsed());
52:
53: sleep(1);
54: $bag2 = new MetadataBag();
55: $bag2->initialize($sessionMetadata);
56: $this->assertEquals($bag1->getCreated(), $bag2->getCreated());
57: $this->assertEquals($bag1->getLastUsed(), $bag2->getLastUsed());
58: $this->assertEquals($bag2->getCreated(), $bag2->getLastUsed());
59:
60: sleep(1);
61: $bag3 = new MetadataBag();
62: $bag3->initialize($sessionMetadata);
63: $this->assertEquals($bag1->getCreated(), $bag3->getCreated());
64: $this->assertGreaterThan($bag2->getLastUsed(), $bag3->getLastUsed());
65: $this->assertNotEquals($bag3->getCreated(), $bag3->getLastUsed());
66: }
67:
68: public function testGetSetName()
69: {
70: $this->assertEquals('__metadata', $this->bag->getName());
71: $this->bag->setName('foo');
72: $this->assertEquals('foo', $this->bag->getName());
73: }
74:
75: public function testGetStorageKey()
76: {
77: $this->assertEquals('_sf2_meta', $this->bag->getStorageKey());
78: }
79:
80: public function testGetLifetime()
81: {
82: $bag = new MetadataBag();
83: $array = array(MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 1000);
84: $bag->initialize($array);
85: $this->assertEquals(1000, $bag->getLifetime());
86: }
87:
88: public function testGetCreated()
89: {
90: $this->assertEquals(1234567, $this->bag->getCreated());
91: }
92:
93: public function testGetLastUsed()
94: {
95: $this->assertLessThanOrEqual(time(), $this->bag->getLastUsed());
96: }
97:
98: public function testClear()
99: {
100: $this->bag->clear();
101: }
102:
103: public function testSkipLastUsedUpdate()
104: {
105: $bag = new MetadataBag('', 30);
106: $timeStamp = time();
107:
108: $created = $timeStamp - 15;
109: $sessionMetadata = array(
110: MetadataBag::CREATED => $created,
111: MetadataBag::UPDATED => $created,
112: MetadataBag::LIFETIME => 1000,
113: );
114: $bag->initialize($sessionMetadata);
115:
116: $this->assertEquals($created, $sessionMetadata[MetadataBag::UPDATED]);
117: }
118:
119: public function testDoesNotSkipLastUsedUpdate()
120: {
121: $bag = new MetadataBag('', 30);
122: $timeStamp = time();
123:
124: $created = $timeStamp - 45;
125: $sessionMetadata = array(
126: MetadataBag::CREATED => $created,
127: MetadataBag::UPDATED => $created,
128: MetadataBag::LIFETIME => 1000,
129: );
130: $bag->initialize($sessionMetadata);
131:
132: $this->assertEquals($timeStamp, $sessionMetadata[MetadataBag::UPDATED]);
133: }
134: }
135: