1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Cookie\Test\Unit\Model\Config\Backend;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Session\Config\Validator\CookieDomainValidator;
/**
* Test \Magento\Cookie\Model\Config\Backend\Domain
*/
class DomainTest extends \PHPUnit\Framework\TestCase
{
/** @var \Magento\Framework\Model\ResourceModel\AbstractResource | \PHPUnit_Framework_MockObject_MockObject */
protected $resourceMock;
/** @var \Magento\Cookie\Model\Config\Backend\Domain */
protected $domain;
/**
* @var CookieDomainValidator | \PHPUnit_Framework_MockObject_MockObject
*/
protected $validatorMock;
protected function setUp()
{
$eventDispatcherMock = $this->createMock(\Magento\Framework\Event\Manager::class);
$contextMock = $this->createMock(\Magento\Framework\Model\Context::class);
$contextMock->expects(
$this->any()
)->method(
'getEventDispatcher'
)->will(
$this->returnValue($eventDispatcherMock)
);
$this->resourceMock = $this->createPartialMock(\Magento\Framework\Model\ResourceModel\AbstractResource::class, [
'_construct',
'getConnection',
'getIdFieldName',
'beginTransaction',
'save',
'commit',
'addCommitCallback',
'rollBack',
]);
$this->validatorMock = $this->getMockBuilder(
\Magento\Framework\Session\Config\Validator\CookieDomainValidator::class
)->disableOriginalConstructor()
->getMock();
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
$this->domain = $helper->getObject(
\Magento\Cookie\Model\Config\Backend\Domain::class,
[
'context' => $contextMock,
'resource' => $this->resourceMock,
'configValidator' => $this->validatorMock,
]
);
}
/**
* @covers \Magento\Cookie\Model\Config\Backend\Domain::beforeSave
* @dataProvider beforeSaveDataProvider
*
* @param string $value
* @param bool $isValid
* @param int $callNum
* @param int $callGetMessages
*/
public function testBeforeSave($value, $isValid, $callNum, $callGetMessages = 0)
{
$this->resourceMock->expects($this->any())->method('addCommitCallback')->will($this->returnSelf());
$this->resourceMock->expects($this->any())->method('commit')->will($this->returnSelf());
$this->resourceMock->expects($this->any())->method('rollBack')->will($this->returnSelf());
$this->validatorMock->expects($this->exactly($callNum))
->method('isValid')
->will($this->returnValue($isValid));
$this->validatorMock->expects($this->exactly($callGetMessages))
->method('getMessages')
->will($this->returnValue(['message']));
$this->domain->setValue($value);
try {
$this->domain->beforeSave();
if ($callGetMessages) {
$this->fail('Failed to throw exception');
}
} catch (LocalizedException $e) {
$this->assertEquals('Invalid domain name: message', $e->getMessage());
}
}
/**
* @return array
*/
public function beforeSaveDataProvider()
{
return [
'not string' => [['array'], false, 1, 1],
'invalid hostname' => ['http://', false, 1, 1],
'valid hostname' => ['hostname.com', true, 1, 0],
'empty string' => ['', false, 0, 0],
];
}
}