Skip to content

Commit d607770

Browse files
author
Dale Sikkema
committed
MAGETWO-52143: Make Redis session adapter changes backwards compatible in 2.1
1 parent 36b7d81 commit d607770

File tree

3 files changed

+83
-54
lines changed

3 files changed

+83
-54
lines changed

dev/tests/integration/testsuite/Magento/Framework/Session/ConfigTest.php

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,12 @@ protected function setUp()
3636
$sessionManager->writeClose();
3737
}
3838
$this->deploymentConfigMock = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
39+
3940
$this->deploymentConfigMock->expects($this->at(0))
40-
->method('get')
41-
->with($this->equalTo(Config::PARAM_SESSION_SAVE_METHOD), $this->anything())
42-
->will($this->returnValue('files'));
43-
$this->deploymentConfigMock->expects($this->at(1))
4441
->method('get')
4542
->with(Config::PARAM_SESSION_SAVE_PATH)
4643
->will($this->returnValue(null));
47-
$this->deploymentConfigMock->expects($this->at(2))
44+
$this->deploymentConfigMock->expects($this->at(1))
4845
->method('get')
4946
->with(Config::PARAM_SESSION_CACHE_LIMITER)
5047
->will($this->returnValue($this->_cacheLimiter));
@@ -57,7 +54,7 @@ protected function setUp()
5754
->get('Magento\Framework\Filesystem\DirectoryList')
5855
->getPath(DirectoryList::SESSION);
5956
}
60-
57+
6158
/**
6259
* @magentoAppIsolation enabled
6360
*/
@@ -86,11 +83,6 @@ public function testDefaultConfiguration()
8683
$this->assertEquals($this->_model->getSavePath(), $this->_model->getOption('save_path'));
8784
}
8885

89-
public function testGetSessionSaveMethod()
90-
{
91-
$this->assertEquals('files', $this->_model->getSaveHandler());
92-
}
93-
9486
/**
9587
* Unable to add integration tests for testGetLifetimePathNonDefault
9688
*
@@ -122,7 +114,6 @@ public function optionsProvider()
122114
return [
123115
['save_path', 'getSavePath', __DIR__],
124116
['name', 'getName', 'FOOBAR'],
125-
['save_handler', 'getSaveHandler', 'user'],
126117
['gc_probability', 'getGcProbability', 42],
127118
['gc_divisor', 'getGcDivisor', 3],
128119
['gc_maxlifetime', 'getGcMaxlifetime', 180],
@@ -152,12 +143,6 @@ public function testNameIsMutable()
152143
$this->assertEquals('FOOBAR', $this->_model->getName());
153144
}
154145

155-
public function testSaveHandlerIsMutable()
156-
{
157-
$this->_model->setSaveHandler('user');
158-
$this->assertEquals('user', $this->_model->getSaveHandler());
159-
}
160-
161146
public function testCookieLifetimeIsMutable()
162147
{
163148
$this->_model->setCookieLifetime(20);
@@ -295,7 +280,7 @@ public function testConstructorSavePath($existing, $given, $expected)
295280
$this->markTestSkipped('Cannot set session.save_path with ini_set');
296281
}
297282

298-
$this->deploymentConfigMock->expects($this->at(1))
283+
$this->deploymentConfigMock->expects($this->at(0))
299284
->method('get')
300285
->with(Config::PARAM_SESSION_SAVE_PATH)
301286
->will($this->returnValue($given));
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Session;
7+
8+
use Magento\Framework\App\DeploymentConfig;
9+
use Magento\Framework\Session\Config\ConfigInterface;
10+
use Magento\Framework\Session\SaveHandler;
11+
use Magento\Framework\App\ObjectManager;
12+
13+
class SaveHandlerTest extends \PHPUnit_Framework_TestCase
14+
{
15+
/**
16+
* Tests that the session handler is correctly set when object is created.
17+
*
18+
* @dataProvider saveHandlerProvider
19+
* @param string $deploymentConfigHandler
20+
* @param string $iniHandler
21+
*/
22+
public function testSetSaveHandler($deploymentConfigHandler, $iniHandler)
23+
{
24+
// Set expected session.save_handler config
25+
if ($deploymentConfigHandler) {
26+
if ($deploymentConfigHandler !== 'files') {
27+
$expected = 'user';
28+
} else {
29+
$expected = $deploymentConfigHandler;
30+
}
31+
} else if ($iniHandler) {
32+
$expected = $iniHandler;
33+
} else {
34+
$expected = SaveHandlerInterface::DEFAULT_HANDLER;
35+
}
36+
37+
// Set ini configuration
38+
if ($iniHandler) {
39+
$oldIni = ini_set('session.save_handler', $iniHandler);
40+
}
41+
42+
/** @var DeploymentConfig | \PHPUnit_Framework_MockObject_MockObject $deploymentConfigMock */
43+
$deploymentConfigMock = $this->getMockBuilder(DeploymentConfig::class)
44+
->disableOriginalConstructor()
45+
->getMock();
46+
$deploymentConfigMock->expects($this->once())
47+
->method('get')
48+
->with(Config::PARAM_SESSION_SAVE_METHOD, SaveHandlerInterface::DEFAULT_HANDLER)
49+
->willReturn($deploymentConfigHandler ?: SaveHandlerInterface::DEFAULT_HANDLER);
50+
51+
new SaveHandler(
52+
ObjectManager::getInstance()->get(SaveHandlerFactory::class),
53+
$deploymentConfigMock
54+
);
55+
56+
// Test expectation
57+
$this->assertEquals(
58+
$expected,
59+
ObjectManager::getInstance()->get(ConfigInterface::class)->getOption('session.save_handler')
60+
);
61+
62+
// Reset ini configuration
63+
if (isset($oldIni)) {
64+
ini_set('session.save_handler', $oldIni);
65+
}
66+
}
67+
68+
public function saveHandlerProvider()
69+
{
70+
return [
71+
['db', false],
72+
['db', 'files'],
73+
[false, 'files'],
74+
[false, false],
75+
];
76+
}
77+
}

lib/internal/Magento/Framework/Session/Test/Unit/ConfigTest.php

Lines changed: 2 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515

1616
class ConfigTest extends \PHPUnit_Framework_TestCase
1717
{
18-
/** mock session.save_handler value from deployment config */
19-
const SESSION_HANDLER_CONFIG = 'files';
20-
2118
/**
2219
* @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
2320
*/
@@ -89,7 +86,6 @@ public function optionsProvider()
8986
return [
9087
['save_path', 'getSavePath', __DIR__],
9188
['name', 'getName', 'FOOBAR'],
92-
['save_handler', 'getSaveHandler', 'user'],
9389
['gc_probability', 'getGcProbability', 42],
9490
['gc_divisor', 'getGcDivisor', 3],
9591
['gc_maxlifetime', 'getGcMaxlifetime', 180],
@@ -135,27 +131,6 @@ public function testNameIsMutable()
135131
$this->assertEquals('FOOBAR', $this->config->getName());
136132
}
137133

138-
public function testSaveHandlerFromConfig()
139-
{
140-
$this->getModel($this->validatorMock);
141-
$this->assertSame(
142-
self::SESSION_HANDLER_CONFIG,
143-
$this->config->getSaveHandler(),
144-
var_export($this->config->toArray(), 1)
145-
);
146-
}
147-
148-
public function testSaveHandlerIsMutable()
149-
{
150-
$this->getModel($this->validatorMock);
151-
$this->config->setSaveHandler('redis');
152-
$this->assertEquals('user', $this->config->getSaveHandler());
153-
$this->assertEquals('redis', $this->config->getSaveHandlerName());
154-
$this->config->setSaveHandler('files');
155-
$this->assertEquals('files', $this->config->getSaveHandler());
156-
$this->assertEquals('files', $this->config->getSaveHandlerName());
157-
}
158-
159134
public function testCookieLifetimeIsMutable()
160135
{
161136
$this->getModel($this->validatorMock);
@@ -374,7 +349,6 @@ public function constructorDataProvider()
374349
true,
375350
true,
376351
[
377-
'session.save_handler' => 'files',
378352
'session.cache_limiter' => 'files',
379353
'session.cookie_lifetime' => 0,
380354
'session.cookie_path' => '/',
@@ -386,7 +360,6 @@ public function constructorDataProvider()
386360
true,
387361
false,
388362
[
389-
'session.save_handler' => 'files',
390363
'session.cache_limiter' => 'files',
391364
'session.cookie_httponly' => false,
392365
],
@@ -395,7 +368,6 @@ public function constructorDataProvider()
395368
false,
396369
true,
397370
[
398-
'session.save_handler' => 'files',
399371
'session.cache_limiter' => 'files',
400372
'session.cookie_lifetime' => 3600,
401373
'session.cookie_path' => '/',
@@ -456,14 +428,10 @@ protected function getModel($validator)
456428

457429
$deploymentConfigMock = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
458430
$deploymentConfigMock->expects($this->at(0))
459-
->method('get')
460-
->with(Config::PARAM_SESSION_SAVE_METHOD, ini_get('session.save_handler') ?: 'files')
461-
->willReturn(self::SESSION_HANDLER_CONFIG);
462-
$deploymentConfigMock->expects($this->at(1))
463431
->method('get')
464432
->with(Config::PARAM_SESSION_SAVE_PATH)
465433
->will($this->returnValue(null));
466-
$deploymentConfigMock->expects($this->at(2))
434+
$deploymentConfigMock->expects($this->at(1))
467435
->method('get')
468436
->with(Config::PARAM_SESSION_CACHE_LIMITER)
469437
->will($this->returnValue('files'));
@@ -474,13 +442,12 @@ protected function getModel($validator)
474442
'scopeConfig' => $this->configMock,
475443
'validatorFactory' => $this->validatorFactoryMock,
476444
'scopeType' => \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
477-
'cacheLimiter' => \Magento\Framework\Session\SaveHandlerInterface::DEFAULT_HANDLER,
445+
'cacheLimiter' => 'files',
478446
'lifetimePath' => 'test_web/test_cookie/test_cookie_lifetime',
479447
'request' => $this->requestMock,
480448
'filesystem' => $filesystemMock,
481449
'deploymentConfig' => $deploymentConfigMock,
482450
]
483-
484451
);
485452
return $this->config;
486453
}

0 commit comments

Comments
 (0)