Skip to content

Commit a094623

Browse files
committed
Merge remote-tracking branch 'origin/MC-30290' into 2.3-develop-pr104
2 parents 8dc4a67 + 1980e32 commit a094623

File tree

20 files changed

+1091
-533
lines changed

20 files changed

+1091
-533
lines changed

app/code/Magento/Catalog/Model/Layout/DepersonalizePlugin.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,55 @@
55
* Copyright © Magento, Inc. All rights reserved.
66
* See COPYING.txt for license details.
77
*/
8+
declare(strict_types=1);
9+
810
namespace Magento\Catalog\Model\Layout;
911

12+
use Magento\Catalog\Model\Session as CatalogSession;
13+
use Magento\Framework\View\LayoutInterface;
1014
use Magento\PageCache\Model\DepersonalizeChecker;
1115

1216
/**
13-
* Class DepersonalizePlugin
17+
* Depersonalize customer data.
18+
*
19+
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
1420
*/
1521
class DepersonalizePlugin
1622
{
1723
/**
1824
* @var DepersonalizeChecker
1925
*/
20-
protected $depersonalizeChecker;
26+
private $depersonalizeChecker;
2127

2228
/**
2329
* Catalog session
2430
*
25-
* @var \Magento\Catalog\Model\Session
31+
* @var CatalogSession
2632
*/
27-
protected $catalogSession;
33+
private $catalogSession;
2834

2935
/**
3036
* @param DepersonalizeChecker $depersonalizeChecker
31-
* @param \Magento\Catalog\Model\Session $catalogSession
37+
* @param CatalogSession $catalogSession
3238
*/
3339
public function __construct(
3440
DepersonalizeChecker $depersonalizeChecker,
35-
\Magento\Catalog\Model\Session $catalogSession
41+
CatalogSession $catalogSession
3642
) {
37-
$this->catalogSession = $catalogSession;
3843
$this->depersonalizeChecker = $depersonalizeChecker;
44+
$this->catalogSession = $catalogSession;
3945
}
4046

4147
/**
42-
* After generate Xml
48+
* Change sensitive customer data if the depersonalization is needed.
4349
*
44-
* @param \Magento\Framework\View\LayoutInterface $subject
45-
* @param \Magento\Framework\View\LayoutInterface $result
46-
* @return \Magento\Framework\View\LayoutInterface
50+
* @param LayoutInterface $subject
51+
* @return void
4752
*/
48-
public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
53+
public function afterGenerateElements(LayoutInterface $subject)
4954
{
5055
if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
5156
$this->catalogSession->clearStorage();
5257
}
53-
return $result;
5458
}
5559
}

app/code/Magento/Catalog/Test/Unit/Model/Layout/DepersonalizePluginTest.php

Lines changed: 46 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,81 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
namespace Magento\Catalog\Test\Unit\Model\Layout;
89

9-
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
10+
use Magento\Catalog\Model\Layout\DepersonalizePlugin;
11+
use Magento\Catalog\Model\Session as CatalogSession;
12+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
13+
use Magento\Framework\View\LayoutInterface;
14+
use Magento\PageCache\Model\DepersonalizeChecker;
15+
use PHPUnit\Framework\TestCase;
1016

11-
class DepersonalizePluginTest extends \PHPUnit\Framework\TestCase
17+
/**
18+
* Tests Magento\Catalog\Model\Layout\DepersonalizePlugin.
19+
*/
20+
class DepersonalizePluginTest extends TestCase
1221
{
1322
/**
14-
* @var \Magento\Catalog\Model\Layout\DepersonalizePlugin
23+
* @var DepersonalizePlugin
1524
*/
16-
protected $plugin;
25+
private $plugin;
1726

1827
/**
19-
* @var \Magento\Catalog\Model\Session|\PHPUnit_Framework_MockObject_MockObject
28+
* @var CatalogSession|\PHPUnit_Framework_MockObject_MockObject
2029
*/
21-
protected $catalogSessionMock;
30+
private $catalogSessionMock;
2231

2332
/**
24-
* @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
33+
* @var DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
2534
*/
26-
protected $depersonalizeCheckerMock;
35+
private $depersonalizeCheckerMock;
2736

2837
/**
29-
* @var \Magento\Framework\View\Layout|\PHPUnit_Framework_MockObject_MockObject
38+
* @var LayoutInterface|\PHPUnit\Framework\MockObject\MockObject
3039
*/
31-
protected $resultLayout;
40+
private $layoutMock;
3241

42+
/**
43+
* @inheritdoc
44+
*/
3345
protected function setUp()
3446
{
35-
$this->layoutMock = $this->createMock(\Magento\Framework\View\Layout::class);
36-
$this->catalogSessionMock = $this->createPartialMock(\Magento\Catalog\Model\Session::class, ['clearStorage']);
37-
$this->resultLayout = $this->createMock(\Magento\Framework\View\Layout::class);
38-
$this->depersonalizeCheckerMock = $this->createMock(\Magento\PageCache\Model\DepersonalizeChecker::class);
39-
40-
$this->plugin = (new ObjectManager($this))->getObject(
41-
\Magento\Catalog\Model\Layout\DepersonalizePlugin::class,
42-
['catalogSession' => $this->catalogSessionMock, 'depersonalizeChecker' => $this->depersonalizeCheckerMock]
47+
$this->layoutMock = $this->getMockForAbstractClass(LayoutInterface::class);
48+
$this->catalogSessionMock = $this->createPartialMock(CatalogSession::class, ['clearStorage']);
49+
$this->depersonalizeCheckerMock = $this->createMock(DepersonalizeChecker::class);
50+
51+
$this->plugin = (new ObjectManagerHelper($this))->getObject(
52+
DepersonalizePlugin::class,
53+
[
54+
'catalogSession' => $this->catalogSessionMock,
55+
'depersonalizeChecker' => $this->depersonalizeCheckerMock,
56+
]
4357
);
4458
}
4559

46-
public function testAfterGenerateXml()
60+
/**
61+
* Tests afterGenerateElements method when depersonalization is needed.
62+
*
63+
* @return void
64+
*/
65+
public function testAfterGenerateElements(): void
4766
{
4867
$this->catalogSessionMock->expects($this->once())->method('clearStorage');
4968
$this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
50-
$actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
51-
$this->assertEquals($this->resultLayout, $actualResult);
69+
$this->assertEmpty($this->plugin->afterGenerateElements($this->layoutMock));
5270
}
5371

54-
public function testAfterGenerateXmlNoDepersonalize()
72+
/**
73+
* Tests afterGenerateElements method when depersonalization is not needed.
74+
*
75+
* @return void
76+
*/
77+
public function testAfterGenerateElementsNoDepersonalize(): void
5578
{
5679
$this->catalogSessionMock->expects($this->never())->method('clearStorage');
5780
$this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
58-
$actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $this->resultLayout);
59-
$this->assertEquals($this->resultLayout, $actualResult);
81+
$this->assertEmpty($this->plugin->afterGenerateElements($this->layoutMock));
6082
}
6183
}

app/code/Magento/Checkout/Model/Layout/DepersonalizePlugin.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,54 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Checkout\Model\Layout;
79

10+
use Magento\Checkout\Model\Session as CheckoutSession;
11+
use Magento\Framework\View\LayoutInterface;
812
use Magento\PageCache\Model\DepersonalizeChecker;
913

1014
/**
11-
* Class DepersonalizePlugin
15+
* Depersonalize customer data.
16+
*
17+
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
1218
*/
1319
class DepersonalizePlugin
1420
{
1521
/**
1622
* @var DepersonalizeChecker
1723
*/
18-
protected $depersonalizeChecker;
24+
private $depersonalizeChecker;
1925

2026
/**
21-
* @var \Magento\Checkout\Model\Session
27+
* @var CheckoutSession
2228
*/
23-
protected $checkoutSession;
29+
private $checkoutSession;
2430

2531
/**
2632
* @param DepersonalizeChecker $depersonalizeChecker
27-
* @param \Magento\Checkout\Model\Session $checkoutSession
33+
* @param CheckoutSession $checkoutSession
2834
* @codeCoverageIgnore
2935
*/
3036
public function __construct(
3137
DepersonalizeChecker $depersonalizeChecker,
32-
\Magento\Checkout\Model\Session $checkoutSession
38+
CheckoutSession $checkoutSession
3339
) {
34-
$this->checkoutSession = $checkoutSession;
3540
$this->depersonalizeChecker = $depersonalizeChecker;
41+
$this->checkoutSession = $checkoutSession;
3642
}
3743

3844
/**
39-
* After generate Xml
45+
* Change sensitive customer data if the depersonalization is needed.
4046
*
41-
* @param \Magento\Framework\View\LayoutInterface $subject
42-
* @param \Magento\Framework\View\LayoutInterface $result
43-
* @return \Magento\Framework\View\LayoutInterface
47+
* @param LayoutInterface $subject
48+
* @return void
4449
*/
45-
public function afterGenerateXml(\Magento\Framework\View\LayoutInterface $subject, $result)
50+
public function afterGenerateElements(LayoutInterface $subject)
4651
{
4752
if ($this->depersonalizeChecker->checkIfDepersonalize($subject)) {
4853
$this->checkoutSession->clearStorage();
4954
}
50-
return $result;
5155
}
5256
}

app/code/Magento/Checkout/Test/Unit/Model/Layout/DepersonalizePluginTest.php

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,84 +3,89 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
namespace Magento\Checkout\Test\Unit\Model\Layout;
89

10+
use Magento\Checkout\Model\Layout\DepersonalizePlugin;
11+
use Magento\Checkout\Model\Session as CheckoutSession;
12+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
13+
use Magento\Framework\View\LayoutInterface;
14+
use Magento\PageCache\Model\DepersonalizeChecker;
15+
use PHPUnit\Framework\TestCase;
16+
917
/**
10-
* Class DepersonalizePluginTest
18+
* Tests \Magento\Checkout\Model\Layout\DepersonalizePlugin.
1119
*/
12-
class DepersonalizePluginTest extends \PHPUnit\Framework\TestCase
20+
class DepersonalizePluginTest extends TestCase
1321
{
1422
/**
15-
* @var \Magento\Customer\Model\Layout\DepersonalizePluginTest
23+
* @var DepersonalizePlugin
1624
*/
17-
protected $plugin;
25+
private $plugin;
1826

1927
/**
20-
* @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
28+
* @var LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
2129
*/
22-
protected $layoutMock;
30+
private $layoutMock;
2331

2432
/**
25-
* @var \Magento\Checkout\Model\Session|\PHPUnit_Framework_MockObject_MockObject
33+
* @var CheckoutSession|\PHPUnit_Framework_MockObject_MockObject
2634
*/
27-
protected $checkoutSessionMock;
35+
private $checkoutSessionMock;
2836

2937
/**
30-
* @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
38+
* @var DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
3139
*/
32-
protected $depersonalizeCheckerMock;
40+
private $depersonalizeCheckerMock;
3341

3442
/**
35-
* SetUp
43+
* @inheritdoc
3644
*/
3745
protected function setUp()
3846
{
39-
$this->layoutMock = $this->createMock(\Magento\Framework\View\Layout::class);
40-
$this->checkoutSessionMock = $this->createPartialMock(
41-
\Magento\Framework\Session\Generic::class,
42-
['clearStorage', 'setData', 'getData']
43-
);
44-
$this->checkoutSessionMock = $this->createPartialMock(\Magento\Checkout\Model\Session::class, ['clearStorage']);
45-
$this->requestMock = $this->createMock(\Magento\Framework\App\Request\Http::class);
46-
$this->moduleManagerMock = $this->createMock(\Magento\Framework\Module\Manager::class);
47-
$this->cacheConfigMock = $this->createMock(\Magento\PageCache\Model\Config::class);
48-
$this->depersonalizeCheckerMock = $this->createMock(\Magento\PageCache\Model\DepersonalizeChecker::class);
47+
$this->layoutMock = $this->getMockForAbstractClass(LayoutInterface::class);
48+
$this->checkoutSessionMock = $this->createPartialMock(CheckoutSession::class, ['clearStorage']);
49+
$this->depersonalizeCheckerMock = $this->createMock(DepersonalizeChecker::class);
4950

50-
$this->plugin = new \Magento\Checkout\Model\Layout\DepersonalizePlugin(
51-
$this->depersonalizeCheckerMock,
52-
$this->checkoutSessionMock
51+
$this->plugin = (new ObjectManagerHelper($this))->getObject(
52+
DepersonalizePlugin::class,
53+
[
54+
'depersonalizeChecker' => $this->depersonalizeCheckerMock,
55+
'checkoutSession' => $this->checkoutSessionMock,
56+
]
5357
);
5458
}
5559

5660
/**
57-
* Test method afterGenerateXml
61+
* Test afterGenerateElements method when depersonalization is needed.
62+
*
63+
* @return void
5864
*/
59-
public function testAfterGenerateXml()
65+
public function testAfterGenerateElements(): void
6066
{
61-
$expectedResult = $this->createMock(\Magento\Framework\View\Layout::class);
62-
6367
$this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
6468
$this->checkoutSessionMock
6569
->expects($this->once())
6670
->method('clearStorage')
67-
->will($this->returnValue($expectedResult));
71+
->willReturnSelf();
6872

69-
$actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
70-
$this->assertEquals($expectedResult, $actualResult);
73+
$this->assertEmpty($this->plugin->afterGenerateElements($this->layoutMock));
7174
}
7275

73-
public function testAfterGenerateXmlNoDepersonalize()
76+
/**
77+
* Test afterGenerateElements method when depersonalization is not needed.
78+
*
79+
* @return void
80+
*/
81+
public function testAfterGenerateElementsNoDepersonalize(): void
7482
{
75-
$expectedResult = $this->createMock(\Magento\Framework\View\Layout::class);
76-
7783
$this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
7884
$this->checkoutSessionMock
7985
->expects($this->never())
8086
->method('clearStorage')
81-
->will($this->returnValue($expectedResult));
87+
->willReturnSelf();
8288

83-
$actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
84-
$this->assertEquals($expectedResult, $actualResult);
89+
$this->assertEmpty($this->plugin->afterGenerateElements($this->layoutMock));
8590
}
8691
}

0 commit comments

Comments
 (0)