Skip to content

Commit 9d5ac3a

Browse files
author
Sergii Kovalenko
committed
Merge branch 'MAGETWO-54121' into BUGS
2 parents cb603ff + b7030c9 commit 9d5ac3a

File tree

2 files changed

+96
-2
lines changed

2 files changed

+96
-2
lines changed

app/code/Magento/Customer/Controller/Account/Confirm.php

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,16 @@ class Confirm extends \Magento\Customer\Controller\AbstractAccount
4949
*/
5050
protected $session;
5151

52+
/**
53+
* @var \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
54+
*/
55+
private $cookieMetadataFactory;
56+
57+
/**
58+
* @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
59+
*/
60+
private $cookieMetadataManager;
61+
5262
/**
5363
* @param Context $context
5464
* @param Session $customerSession
@@ -79,6 +89,38 @@ public function __construct(
7989
parent::__construct($context);
8090
}
8191

92+
/**
93+
* Retrieve cookie manager
94+
*
95+
* @deprecated
96+
* @return \Magento\Framework\Stdlib\Cookie\PhpCookieManager
97+
*/
98+
private function getCookieManager()
99+
{
100+
if (!$this->cookieMetadataManager) {
101+
$this->cookieMetadataManager = \Magento\Framework\App\ObjectManager::getInstance()->get(
102+
\Magento\Framework\Stdlib\Cookie\PhpCookieManager::class
103+
);
104+
}
105+
return $this->cookieMetadataManager;
106+
}
107+
108+
/**
109+
* Retrieve cookie metadata factory
110+
*
111+
* @deprecated
112+
* @return \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
113+
*/
114+
private function getCookieMetadataFactory()
115+
{
116+
if (!$this->cookieMetadataFactory) {
117+
$this->cookieMetadataFactory = \Magento\Framework\App\ObjectManager::getInstance()->get(
118+
\Magento\Framework\Stdlib\Cookie\CookieMetadataFactory::class
119+
);
120+
}
121+
return $this->cookieMetadataFactory;
122+
}
123+
82124
/**
83125
* Confirm customer account by id and confirmation key
84126
*
@@ -104,7 +146,11 @@ public function execute()
104146
$customerEmail = $this->customerRepository->getById($customerId)->getEmail();
105147
$customer = $this->customerAccountManagement->activate($customerEmail, $key);
106148
$this->session->setCustomerDataAsLoggedIn($customer);
107-
149+
if ($this->getCookieManager()->getCookie('mage-cache-sessid')) {
150+
$metadata = $this->getCookieMetadataFactory()->createCookieMetadata();
151+
$metadata->setPath('/');
152+
$this->getCookieManager()->deleteCookie('mage-cache-sessid', $metadata);
153+
}
108154
$this->messageManager->addSuccess($this->getSuccessMessage());
109155
$resultRedirect->setUrl($this->getSuccessRedirect());
110156
return $resultRedirect;

app/code/Magento/Customer/Test/Unit/Controller/Account/ConfirmTest.php

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Magento\Customer\Test\Unit\Controller\Account;
1010

11+
use Magento\Customer\Controller\Account\Confirm;
1112
use Magento\Customer\Helper\Address;
1213
use Magento\Customer\Model\Url;
1314
use Magento\Store\Model\ScopeInterface;
@@ -19,7 +20,7 @@
1920
class ConfirmTest extends \PHPUnit_Framework_TestCase
2021
{
2122
/**
22-
* @var \Magento\Customer\Controller\Account\Confirm
23+
* @var Confirm
2324
*/
2425
protected $model;
2526

@@ -307,6 +308,40 @@ public function testSuccessMessage($customerId, $key, $vatValidationEnabled, $ad
307308
->method('getStore')
308309
->will($this->returnValue($this->storeMock));
309310

311+
312+
313+
$cookieMetadataManager = $this->getMockBuilder(\Magento\Framework\Stdlib\Cookie\PhpCookieManager::class)
314+
->disableOriginalConstructor()
315+
->getMock();
316+
$cookieMetadataManager->expects($this->once())
317+
->method('getCookie')
318+
->with('mage-cache-sessid')
319+
->willReturn(true);
320+
$cookieMetadataFactory = $this->getMockBuilder(\Magento\Framework\Stdlib\Cookie\CookieMetadataFactory::class)
321+
->disableOriginalConstructor()
322+
->getMock();
323+
$cookieMetadata = $this->getMockBuilder(\Magento\Framework\Stdlib\Cookie\CookieMetadata::class)
324+
->disableOriginalConstructor()
325+
->getMock();
326+
$cookieMetadataFactory->expects($this->once())
327+
->method('createCookieMetadata')
328+
->willReturn($cookieMetadata);
329+
$cookieMetadata->expects($this->once())
330+
->method('setPath')
331+
->with('/');
332+
$cookieMetadataManager->expects($this->once())
333+
->method('deleteCookie')
334+
->with('mage-cache-sessid', $cookieMetadata);
335+
336+
$refClass = new \ReflectionClass(Confirm::class);
337+
$cookieMetadataManagerProperty = $refClass->getProperty('cookieMetadataManager');
338+
$cookieMetadataManagerProperty->setAccessible(true);
339+
$cookieMetadataManagerProperty->setValue($this->model, $cookieMetadataManager);
340+
341+
$cookieMetadataFactoryProperty = $refClass->getProperty('cookieMetadataFactory');
342+
$cookieMetadataFactoryProperty->setAccessible(true);
343+
$cookieMetadataFactoryProperty->setValue($this->model, $cookieMetadataFactory);
344+
310345
$this->model->execute();
311346
}
312347

@@ -404,6 +439,19 @@ public function testSuccessRedirect(
404439
)
405440
->willReturn($isSetFlag);
406441

442+
$cookieMetadataManager = $this->getMockBuilder(\Magento\Framework\Stdlib\Cookie\PhpCookieManager::class)
443+
->disableOriginalConstructor()
444+
->getMock();
445+
$cookieMetadataManager->expects($this->once())
446+
->method('getCookie')
447+
->with('mage-cache-sessid')
448+
->willReturn(false);
449+
450+
$refClass = new \ReflectionClass(Confirm::class);
451+
$refProperty = $refClass->getProperty('cookieMetadataManager');
452+
$refProperty->setAccessible(true);
453+
$refProperty->setValue($this->model, $cookieMetadataManager);
454+
407455
$this->model->execute();
408456
}
409457

0 commit comments

Comments
 (0)