2019-03-18 10:50:13 +00:00
|
|
|
<?php
|
|
|
|
App::uses('AppController', 'Controller');
|
|
|
|
/**
|
|
|
|
* TransSessionIdController class for testing session.use_trans_sid=1.
|
|
|
|
*
|
|
|
|
* @package Cake.Test.Case.Controller
|
|
|
|
*/
|
|
|
|
class TransSessionIdController extends AppController {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*
|
|
|
|
* @param CakeRequest $request Request object for this controller.
|
|
|
|
* @param CakeResponse $response Response object for this controller.
|
|
|
|
*/
|
|
|
|
public function __construct($request = null, $response = null) {
|
|
|
|
parent::__construct($request, $response);
|
|
|
|
$ini = Configure::read('Session.ini');
|
|
|
|
$ini['session.use_cookies'] = 0;
|
|
|
|
$ini['session.use_only_cookies'] = 0;
|
|
|
|
$ini['session.use_trans_sid'] = 1;
|
|
|
|
Configure::write('Session.ini', $ini);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* For testing redirect URL with session.use_trans_sid=1.
|
|
|
|
*
|
|
|
|
* @return CakeResponse|null
|
|
|
|
*/
|
|
|
|
public function next() {
|
|
|
|
$sessionName = session_name();
|
|
|
|
$sessionId = $this->Session->id();
|
|
|
|
return $this->redirect(array(
|
|
|
|
'controller' => 'trans_session_id',
|
|
|
|
'action' => 'next_step',
|
|
|
|
'?' => array(
|
2019-03-18 11:43:26 +00:00
|
|
|
$sessionName => $sessionId,
|
2019-03-18 10:50:13 +00:00
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ApplicationControllerTest class for testing controllers by using ControllerTestCase.
|
|
|
|
*
|
|
|
|
* ApplicationControllerTest extends ControllerTestCase in contrast
|
|
|
|
* with ControllerTest that extends CakeTestCase.
|
|
|
|
*
|
|
|
|
* @package Cake.Test.Case.Controller
|
|
|
|
*/
|
|
|
|
class ApplicationControllerTest extends ControllerTestCase {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* setupDown method
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2022-12-28 07:03:39 +00:00
|
|
|
public function setUp() : void {
|
2019-03-18 10:50:13 +00:00
|
|
|
CakeSession::destroy();
|
|
|
|
parent::setUp();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* tearDown method
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2022-12-28 07:03:39 +00:00
|
|
|
public function tearDown() : void {
|
2019-03-18 10:50:13 +00:00
|
|
|
CakeSession::destroy();
|
|
|
|
parent::tearDown();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tests the redirect and session config with use_trans_sid=1.
|
2019-03-18 10:52:35 +00:00
|
|
|
*
|
|
|
|
* @return void
|
2019-03-18 10:50:13 +00:00
|
|
|
*/
|
|
|
|
public function testRedirect() {
|
|
|
|
$sessionId = 'o7k64tlhil9pakp89j6d8ovlqk';
|
2019-03-18 11:43:26 +00:00
|
|
|
$this->testAction('/trans_session_id/next?CAKEPHP=' . $sessionId);
|
2022-12-30 08:53:58 +00:00
|
|
|
$this->assertStringContainsString('/trans_session_id/next_step?CAKEPHP=' . $sessionId, $this->headers['Location']);
|
2019-03-18 10:50:13 +00:00
|
|
|
$expectedConfig = array(
|
|
|
|
'cookie' => 'CAKEPHP',
|
|
|
|
'timeout' => 240,
|
|
|
|
'ini' => array(
|
|
|
|
'session.use_trans_sid' => 1,
|
|
|
|
'session.cookie_path' => '/',
|
|
|
|
'session.cookie_lifetime' => 14400,
|
|
|
|
'session.name' => 'CAKEPHP',
|
|
|
|
'session.gc_maxlifetime' => 14400,
|
|
|
|
'session.cookie_httponly' => 1,
|
|
|
|
'session.use_cookies' => 0,
|
|
|
|
'session.use_only_cookies' => 0,
|
|
|
|
),
|
|
|
|
'defaults' => 'php',
|
|
|
|
'cookieTimeout' => 240,
|
|
|
|
'cacheLimiter' => 'must-revalidate',
|
|
|
|
);
|
|
|
|
$actualConfig = Configure::read('Session');
|
|
|
|
$this->assertEquals($expectedConfig, $actualConfig);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|