Skip to content

Commit e7abf62

Browse files
author
Bohdan Korablov
committed
MAGETWO-46478: Frontend CAPTCHA Bypass
1 parent ce89725 commit e7abf62

File tree

6 files changed

+73
-59
lines changed

6 files changed

+73
-59
lines changed

lib/internal/Magento/Framework/Event/Config/Converter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function convert($source)
3838
$config['name'] = $observerNameNode->nodeValue;
3939
$eventObservers[$observerNameNode->nodeValue] = $config;
4040
}
41-
$output[$eventName] = $eventObservers;
41+
$output[mb_strtolower($eventName)] = $eventObservers;
4242
}
4343
return $output;
4444
}

lib/internal/Magento/Framework/Event/Manager.php

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,28 @@
1010

1111
class Manager implements ManagerInterface
1212
{
13-
/**
14-
* Events cache
15-
*
16-
* @var array
17-
*/
18-
protected $_events = [];
19-
2013
/**
2114
* Event invoker
2215
*
2316
* @var InvokerInterface
2417
*/
25-
protected $_invoker;
18+
protected $invoker;
2619

2720
/**
2821
* Event config
2922
*
3023
* @var ConfigInterface
3124
*/
32-
protected $_eventConfig;
25+
protected $eventConfig;
3326

3427
/**
3528
* @param InvokerInterface $invoker
3629
* @param ConfigInterface $eventConfig
3730
*/
3831
public function __construct(InvokerInterface $invoker, ConfigInterface $eventConfig)
3932
{
40-
$this->_invoker = $invoker;
41-
$this->_eventConfig = $eventConfig;
33+
$this->invoker = $invoker;
34+
$this->eventConfig = $eventConfig;
4235
}
4336

4437
/**
@@ -53,16 +46,17 @@ public function __construct(InvokerInterface $invoker, ConfigInterface $eventCon
5346
*/
5447
public function dispatch($eventName, array $data = [])
5548
{
49+
$eventName = mb_strtolower($eventName);
5650
\Magento\Framework\Profiler::start('EVENT:' . $eventName, ['group' => 'EVENT', 'name' => $eventName]);
57-
foreach ($this->_eventConfig->getObservers($eventName) as $observerConfig) {
51+
foreach ($this->eventConfig->getObservers($eventName) as $observerConfig) {
5852
$event = new \Magento\Framework\Event($data);
5953
$event->setName($eventName);
6054

6155
$wrapper = new Observer();
6256
$wrapper->setData(array_merge(['event' => $event], $data));
6357

6458
\Magento\Framework\Profiler::start('OBSERVER:' . $observerConfig['name']);
65-
$this->_invoker->dispatch($observerConfig, $wrapper);
59+
$this->invoker->dispatch($observerConfig, $wrapper);
6660
\Magento\Framework\Profiler::stop('OBSERVER:' . $observerConfig['name']);
6761
}
6862
\Magento\Framework\Profiler::stop('EVENT:' . $eventName);

lib/internal/Magento/Framework/Event/Test/Unit/Config/ConverterTest.php

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,44 @@
55
*/
66
namespace Magento\Framework\Event\Test\Unit\Config;
77

8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
9+
use Magento\Framework\Event\Config\Converter;
10+
811
class ConverterTest extends \PHPUnit_Framework_TestCase
912
{
1013
/**
11-
* @var \Magento\Framework\Event\Config\Converter
14+
* @var Converter
1215
*/
13-
protected $_model;
16+
protected $model;
1417

1518
/**
1619
* @var string
1720
*/
18-
protected $_filePath;
21+
protected $filePath;
1922

2023
/**
2124
* @var \DOMDocument
2225
*/
23-
protected $_source;
26+
protected $source;
27+
28+
/**
29+
* @var ObjectManagerHelper
30+
*/
31+
protected $objectManagerHelper;
2432

2533
protected function setUp()
2634
{
27-
$this->_filePath = __DIR__ . '/_files/';
28-
$this->_source = new \DOMDocument();
29-
$this->_model = new \Magento\Framework\Event\Config\Converter();
35+
$this->objectManagerHelper = new ObjectManagerHelper($this);
36+
$this->filePath = __DIR__ . '/_files/';
37+
$this->source = new \DOMDocument();
38+
$this->model = $this->objectManagerHelper->getObject(Converter::class);
3039
}
3140

3241
public function testConvert()
3342
{
34-
$this->_source->loadXML(file_get_contents($this->_filePath . 'event_config.xml'));
35-
$convertedFile = include $this->_filePath . 'event_config.php';
36-
$this->assertEquals($convertedFile, $this->_model->convert($this->_source));
43+
$this->source->loadXML(file_get_contents($this->filePath . 'event_config.xml'));
44+
$convertedFile = include $this->filePath . 'event_config.php';
45+
$this->assertEquals($convertedFile, $this->model->convert($this->source));
3746
}
3847

3948
/**
@@ -42,7 +51,7 @@ public function testConvert()
4251
*/
4352
public function testConvertThrowsExceptionWhenDomIsInvalid()
4453
{
45-
$this->_source->loadXML(file_get_contents($this->_filePath . 'event_invalid_config.xml'));
46-
$this->_model->convert($this->_source);
54+
$this->source->loadXML(file_get_contents($this->filePath . 'event_invalid_config.xml'));
55+
$this->model->convert($this->source);
4756
}
4857
}

lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/event_config.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@
1515
'shared' => false,
1616
'name' => 'observer_2',
1717
],
18+
],
19+
'some_eventname' => [
20+
'observer_3' => ['instance' => 'instance_3', 'name' => 'observer_3'],
1821
]
1922
];

lib/internal/Magento/Framework/Event/Test/Unit/Config/_files/event_config.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,7 @@
1313
<event name="event_2">
1414
<observer name="observer_2" instance="instance_2" disabled="true" shared="false" />
1515
</event>
16+
<event name="some_eventName">
17+
<observer name="observer_3" instance="instance_3" disabled="false" shared="true" />
18+
</event>
1619
</config>

lib/internal/Magento/Framework/Event/Test/Unit/ManagerTest.php

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
*/
66
namespace Magento\Framework\Event\Test\Unit;
77

8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
9+
use Magento\Framework\Event\InvokerInterface;
10+
use Magento\Framework\Event\ConfigInterface;
11+
use Magento\Framework\Event\Manager as EventManager;
12+
813
/**
914
* Class ManagerTest
1015
*
@@ -15,74 +20,74 @@ class ManagerTest extends \PHPUnit_Framework_TestCase
1520
/**
1621
* @var \PHPUnit_Framework_MockObject_MockObject
1722
*/
18-
protected $_invoker;
23+
protected $invokerMock;
1924

2025
/**
2126
* @var \PHPUnit_Framework_MockObject_MockObject
2227
*/
23-
protected $_eventFactory;
28+
protected $eventFactory;
2429

2530
/**
2631
* @var \PHPUnit_Framework_MockObject_MockObject
2732
*/
28-
protected $_event;
33+
protected $event;
2934

3035
/**
3136
* @var \PHPUnit_Framework_MockObject_MockObject
3237
*/
33-
protected $_wrapperFactory;
38+
protected $wrapperFactory;
3439

3540
/**
3641
* @var \PHPUnit_Framework_MockObject_MockObject
3742
*/
38-
protected $_observer;
43+
protected $observer;
3944

4045
/**
4146
* @var \PHPUnit_Framework_MockObject_MockObject
4247
*/
43-
protected $_eventConfigMock;
48+
protected $eventConfigMock;
4449

4550
/**
4651
* @var \Magento\Framework\Event\Manager
4752
*/
48-
protected $_eventManager;
53+
protected $eventManager;
54+
55+
/**
56+
* @var ObjectManagerHelper
57+
*/
58+
protected $objectManagerHelper;
4959

5060
protected function setUp()
5161
{
52-
$this->_invoker = $this->getMock('Magento\Framework\Event\InvokerInterface');
53-
$this->_eventConfigMock = $this->getMock('Magento\Framework\Event\ConfigInterface');
62+
$this->objectManagerHelper = new ObjectManagerHelper($this);
63+
$this->invokerMock = $this->getMock(InvokerInterface::class);
64+
$this->eventConfigMock = $this->getMock(ConfigInterface::class);
5465

55-
$this->_eventManager = new \Magento\Framework\Event\Manager($this->_invoker, $this->_eventConfigMock);
66+
$this->eventManager = $this->objectManagerHelper->getObject(
67+
EventManager::class,
68+
[
69+
'invoker' => $this->invokerMock,
70+
'eventConfig' => $this->eventConfigMock
71+
]
72+
);
5673
}
5774

5875
public function testDispatch()
5976
{
60-
$this->_eventConfigMock->expects(
61-
$this->once()
62-
)->method(
63-
'getObservers'
64-
)->with(
65-
'some_event'
66-
)->will(
67-
$this->returnValue(
68-
['observer' => ['instance' => 'class', 'method' => 'method', 'name' => 'observer']]
69-
)
70-
);
71-
$this->_eventManager->dispatch('some_event', ['123']);
77+
$this->eventConfigMock->expects($this->once())
78+
->method('getObservers')
79+
->with('some_eventname')
80+
->willReturn(['observer' => ['instance' => 'class', 'method' => 'method', 'name' => 'observer']]);
81+
$this->eventManager->dispatch('some_eventName', ['123']);
7282
}
7383

7484
public function testDispatchWithEmptyEventObservers()
7585
{
76-
$this->_eventConfigMock->expects(
77-
$this->once()
78-
)->method(
79-
'getObservers'
80-
)->with(
81-
'some_event'
82-
)->will(
83-
$this->returnValue([])
84-
);
85-
$this->_invoker->expects($this->never())->method('dispatch');
86-
$this->_eventManager->dispatch('some_event');
86+
$this->eventConfigMock->expects($this->once())
87+
->method('getObservers')
88+
->with('some_event')
89+
->willReturn([]);
90+
$this->invokerMock->expects($this->never())->method('dispatch');
91+
$this->eventManager->dispatch('some_event');
8792
}
8893
}

0 commit comments

Comments
 (0)