Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
16591 anikendra 1
<?php
2
/**
3
 * SessionComponentTest file
4
 *
5
 * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
14
 * @package       Cake.Test.Case.Controller.Component
15
 * @since         CakePHP(tm) v 1.2.0.5436
16
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
17
 */
18
 
19
App::uses('Controller', 'Controller');
20
App::uses('SessionComponent', 'Controller/Component');
21
 
22
/**
23
 * SessionTestController class
24
 *
25
 * @package       Cake.Test.Case.Controller.Component
26
 */
27
class SessionTestController extends Controller {
28
 
29
/**
30
 * uses property
31
 *
32
 * @var array
33
 */
34
	public $uses = array();
35
 
36
/**
37
 * sessionId method
38
 *
39
 * @return string
40
 */
41
	public function sessionId() {
42
		return $this->Session->id();
43
	}
44
 
45
}
46
 
47
/**
48
 * OrangeSessionTestController class
49
 *
50
 * @package       Cake.Test.Case.Controller.Component
51
 */
52
class OrangeSessionTestController extends Controller {
53
 
54
/**
55
 * uses property
56
 *
57
 * @var array
58
 */
59
	public $uses = array();
60
 
61
/**
62
 * sessionId method
63
 *
64
 * @return string
65
 */
66
	public function sessionId() {
67
		return $this->Session->id();
68
	}
69
 
70
}
71
 
72
/**
73
 * SessionComponentTest class
74
 *
75
 * @package       Cake.Test.Case.Controller.Component
76
 */
77
class SessionComponentTest extends CakeTestCase {
78
 
79
	protected static $_sessionBackup;
80
 
81
/**
82
 * fixtures
83
 *
84
 * @var string
85
 */
86
	public $fixtures = array('core.session');
87
 
88
/**
89
 * test case startup
90
 *
91
 * @return void
92
 */
93
	public static function setupBeforeClass() {
94
		static::$_sessionBackup = Configure::read('Session');
95
		Configure::write('Session', array(
96
			'defaults' => 'php',
97
			'timeout' => 100,
98
			'cookie' => 'test'
99
		));
100
	}
101
 
102
/**
103
 * cleanup after test case.
104
 *
105
 * @return void
106
 */
107
	public static function teardownAfterClass() {
108
		Configure::write('Session', static::$_sessionBackup);
109
	}
110
 
111
/**
112
 * setUp method
113
 *
114
 * @return void
115
 */
116
	public function setUp() {
117
		parent::setUp();
118
		$_SESSION = null;
119
		$this->ComponentCollection = new ComponentCollection();
120
	}
121
 
122
/**
123
 * tearDown method
124
 *
125
 * @return void
126
 */
127
	public function tearDown() {
128
		parent::tearDown();
129
		CakeSession::destroy();
130
	}
131
 
132
/**
133
 * ensure that session ids don't change when request action is called.
134
 *
135
 * @return void
136
 */
137
	public function testSessionIdConsistentAcrossRequestAction() {
138
		$Object = new Object();
139
		$Session = new SessionComponent($this->ComponentCollection);
140
		$expected = $Session->id();
141
 
142
		$result = $Object->requestAction('/session_test/sessionId');
143
		$this->assertEquals($expected, $result);
144
 
145
		$result = $Object->requestAction('/orange_session_test/sessionId');
146
		$this->assertEquals($expected, $result);
147
	}
148
 
149
/**
150
 * testSessionValid method
151
 *
152
 * @return void
153
 */
154
	public function testSessionValid() {
155
		$Session = new SessionComponent($this->ComponentCollection);
156
 
157
		$this->assertTrue($Session->valid());
158
 
159
		Configure::write('Session.checkAgent', true);
160
		$Session->userAgent('rweerw');
161
		$this->assertFalse($Session->valid());
162
 
163
		$Session = new SessionComponent($this->ComponentCollection);
164
		$Session->time = $Session->read('Config.time') + 1;
165
		$this->assertFalse($Session->valid());
166
	}
167
 
168
/**
169
 * testSessionError method
170
 *
171
 * @return void
172
 */
173
	public function testSessionError() {
174
		CakeSession::$lastError = null;
175
		$Session = new SessionComponent($this->ComponentCollection);
176
		$this->assertFalse($Session->error());
177
	}
178
 
179
/**
180
 * testSessionReadWrite method
181
 *
182
 * @return void
183
 */
184
	public function testSessionReadWrite() {
185
		$Session = new SessionComponent($this->ComponentCollection);
186
 
187
		$this->assertNull($Session->read('Test'));
188
 
189
		$this->assertTrue($Session->write('Test', 'some value'));
190
		$this->assertEquals('some value', $Session->read('Test'));
191
		$Session->delete('Test');
192
 
193
		$this->assertTrue($Session->write('Test.key.path', 'some value'));
194
		$this->assertEquals('some value', $Session->read('Test.key.path'));
195
		$this->assertEquals(array('path' => 'some value'), $Session->read('Test.key'));
196
		$this->assertTrue($Session->write('Test.key.path2', 'another value'));
197
		$this->assertEquals(array('path' => 'some value', 'path2' => 'another value'), $Session->read('Test.key'));
198
		$Session->delete('Test');
199
 
200
		$array = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
201
		$this->assertTrue($Session->write('Test', $array));
202
		$this->assertEquals($Session->read('Test'), $array);
203
		$Session->delete('Test');
204
 
205
		$this->assertTrue($Session->write(array('Test'), 'some value'));
206
		$this->assertTrue($Session->write(array('Test' => 'some value')));
207
		$this->assertEquals('some value', $Session->read('Test'));
208
		$Session->delete('Test');
209
	}
210
 
211
/**
212
 * testSessionDelete method
213
 *
214
 * @return void
215
 */
216
	public function testSessionDelete() {
217
		$Session = new SessionComponent($this->ComponentCollection);
218
 
219
		$this->assertFalse($Session->delete('Test'));
220
 
221
		$Session->write('Test', 'some value');
222
		$this->assertTrue($Session->delete('Test'));
223
	}
224
 
225
/**
226
 * testSessionCheck method
227
 *
228
 * @return void
229
 */
230
	public function testSessionCheck() {
231
		$Session = new SessionComponent($this->ComponentCollection);
232
 
233
		$this->assertFalse($Session->check('Test'));
234
 
235
		$Session->write('Test', 'some value');
236
		$this->assertTrue($Session->check('Test'));
237
		$Session->delete('Test');
238
	}
239
 
240
/**
241
 * testSessionFlash method
242
 *
243
 * @return void
244
 */
245
	public function testSessionFlash() {
246
		$Session = new SessionComponent($this->ComponentCollection);
247
 
248
		$this->assertNull($Session->read('Message.flash'));
249
 
250
		$Session->setFlash('This is a test message');
251
		$this->assertEquals(array('message' => 'This is a test message', 'element' => 'default', 'params' => array()), $Session->read('Message.flash'));
252
 
253
		$Session->setFlash('This is a test message', 'test', array('name' => 'Joel Moss'));
254
		$this->assertEquals(array('message' => 'This is a test message', 'element' => 'test', 'params' => array('name' => 'Joel Moss')), $Session->read('Message.flash'));
255
 
256
		$Session->setFlash('This is a test message', 'default', array(), 'myFlash');
257
		$this->assertEquals(array('message' => 'This is a test message', 'element' => 'default', 'params' => array()), $Session->read('Message.myFlash'));
258
 
259
		$Session->setFlash('This is a test message', 'non_existing_layout');
260
		$this->assertEquals(array('message' => 'This is a test message', 'element' => 'default', 'params' => array()), $Session->read('Message.myFlash'));
261
 
262
		$Session->delete('Message');
263
	}
264
 
265
/**
266
 * testSessionId method
267
 *
268
 * @return void
269
 */
270
	public function testSessionId() {
271
		unset($_SESSION);
272
		$Session = new SessionComponent($this->ComponentCollection);
273
		CakeSession::start();
274
		$this->assertEquals(session_id(), $Session->id());
275
	}
276
 
277
/**
278
 * testSessionDestroy method
279
 *
280
 * @return void
281
 */
282
	public function testSessionDestroy() {
283
		$Session = new SessionComponent($this->ComponentCollection);
284
 
285
		$Session->write('Test', 'some value');
286
		$this->assertEquals('some value', $Session->read('Test'));
287
		$Session->destroy('Test');
288
		$this->assertNull($Session->read('Test'));
289
	}
290
 
291
}