Skip to content

Commit f79d97e

Browse files
author
Volodymyr Kublytskyi
committed
Fixed static tests and backported unit test
1 parent 5368727 commit f79d97e

File tree

2 files changed

+112
-3
lines changed

2 files changed

+112
-3
lines changed

app/code/Magento/Customer/Model/Plugin/CustomerFlushFormKey.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Customer\Model\Session;
99
use Magento\Framework\Data\Form\FormKey as DataFormKey;
10+
use \Magento\Framework\Event\Observer;
1011
use Magento\PageCache\Observer\FlushFormKey;
1112

1213
class CustomerFlushFormKey
@@ -36,13 +37,15 @@ public function __construct(Session $session, DataFormKey $dataFormKey)
3637
/**
3738
* @param FlushFormKey $subject
3839
* @param callable $proceed
39-
* @param array $args
40+
* @param Observer $observer
41+
* @return void
42+
*
4043
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
4144
*/
42-
public function aroundExecute(FlushFormKey $subject, callable $proceed, ...$args)
45+
public function aroundExecute(FlushFormKey $subject, callable $proceed, Observer $observer)
4346
{
4447
$currentFormKey = $this->dataFormKey->getFormKey();
45-
$proceed(...$args);
48+
$proceed($observer);
4649
$beforeParams = $this->session->getBeforeRequestParams();
4750
if ($beforeParams['form_key'] == $currentFormKey) {
4851
$beforeParams['form_key'] = $this->dataFormKey->getFormKey();
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Customer\Test\Unit\Model\Plugin;
7+
8+
use Magento\Customer\Model\Plugin\CustomerFlushFormKey;
9+
use Magento\Customer\Model\Session;
10+
use Magento\Framework\App\PageCache\FormKey as CookieFormKey;
11+
use Magento\Framework\Data\Form\FormKey as DataFormKey;
12+
use Magento\Framework\Event\Observer;
13+
use Magento\PageCache\Observer\FlushFormKey;
14+
use PHPUnit_Framework_TestCase as TestCase;
15+
use PHPUnit_Framework_MockObject_MockObject as MockObject;
16+
17+
class CustomerFlushFormKeyTest extends TestCase
18+
{
19+
/**
20+
* @var CookieFormKey | MockObject
21+
*/
22+
private $cookieFormKey;
23+
24+
/**
25+
* @var Session | MockObject
26+
*/
27+
private $customerSession;
28+
29+
/**
30+
* @var DataFormKey | MockObject
31+
*/
32+
private $dataFormKey;
33+
34+
protected function setUp()
35+
{
36+
37+
/** @var CookieFormKey | MockObject */
38+
$this->cookieFormKey = $this->getMockBuilder(CookieFormKey::class)
39+
->disableOriginalConstructor()
40+
->getMock();
41+
42+
/** @var DataFormKey | MockObject */
43+
$this->dataFormKey = $this->getMockBuilder(DataFormKey::class)
44+
->disableOriginalConstructor()
45+
->getMock();
46+
47+
/** @var Session | MockObject */
48+
$this->customerSession = $this->getMockBuilder(Session::class)
49+
->disableOriginalConstructor()
50+
->setMethods(['getBeforeRequestParams', 'setBeforeRequestParams'])
51+
->getMock();
52+
53+
}
54+
55+
/**
56+
* @dataProvider aroundFlushFormKeyProvider
57+
* @param $beforeFormKey
58+
* @param $currentFormKey
59+
* @param $getFormKeyTimes
60+
* @param $setBeforeParamsTimes
61+
*/
62+
public function testAroundFlushFormKey(
63+
$beforeFormKey,
64+
$currentFormKey,
65+
$getFormKeyTimes,
66+
$setBeforeParamsTimes
67+
) {
68+
$observerDto = new Observer();
69+
$observer = new FlushFormKey($this->cookieFormKey, $this->dataFormKey);
70+
$plugin = new CustomerFlushFormKey($this->customerSession, $this->dataFormKey);
71+
72+
$beforeParams['form_key'] = $beforeFormKey;
73+
74+
$this->dataFormKey->expects($this->exactly($getFormKeyTimes))
75+
->method('getFormKey')
76+
->willReturn($currentFormKey);
77+
78+
$this->customerSession->expects($this->once())
79+
->method('getBeforeRequestParams')
80+
->willReturn($beforeParams);
81+
82+
$this->customerSession->expects($this->exactly($setBeforeParamsTimes))
83+
->method('setBeforeRequestParams')
84+
->with($beforeParams);
85+
86+
$proceed = function ($observerDto) use ($observer) {
87+
return $observer->execute($observerDto);
88+
};
89+
90+
$plugin->aroundExecute($observer, $proceed, $observerDto);
91+
}
92+
93+
/**
94+
* Data provider for testAroundFlushFormKey
95+
*
96+
* @return array
97+
*/
98+
public function aroundFlushFormKeyProvider()
99+
{
100+
return [
101+
'valid form key' => ['form_key_value', 'form_key_value', 2, 1],
102+
'corrupted form key' => ['form_old_key_value', 'form_key_value', 1, 0],
103+
'missed form key' => [null, 'form_key_value', 1, 0]
104+
];
105+
}
106+
}

0 commit comments

Comments
 (0)