123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\EncryptionKey\Test\Unit\Model\ResourceModel\Key;
- /**
- * Test Class For Magento\EncryptionKey\Model\ResourceModel\Key\Change
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class ChangeTest extends \PHPUnit\Framework\TestCase
- {
- /** @var \Magento\Framework\Encryption\EncryptorInterface|\PHPUnit_Framework_MockObject_MockObject */
- protected $encryptMock;
- /** @var \Magento\Framework\Filesystem|\PHPUnit_Framework_MockObject_MockObject */
- protected $filesystemMock;
- /** @var \Magento\Config\Model\Config\Structure|\PHPUnit_Framework_MockObject_MockObject */
- protected $structureMock;
- /** @var \Magento\Framework\App\DeploymentConfig\Writer|\PHPUnit_Framework_MockObject_MockObject */
- protected $writerMock;
- /** @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject */
- protected $adapterMock;
- /** @var \Magento\Framework\App\ResourceConnection|\PHPUnit_Framework_MockObject_MockObject */
- protected $resourceMock;
- /** @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject */
- protected $selectMock;
- /** @var \Magento\Framework\Model\ResourceModel\Db\TransactionManagerInterface */
- protected $transactionMock;
- /** @var |\PHPUnit_Framework_MockObject_MockObject */
- protected $objRelationMock;
- /** @var \Magento\Framework\Math\Random|\PHPUnit_Framework_MockObject_MockObject */
- protected $randomMock;
- /** @var \Magento\EncryptionKey\Model\ResourceModel\Key\Change */
- protected $model;
- protected function setUp()
- {
- $this->encryptMock = $this->getMockBuilder(\Magento\Framework\Encryption\EncryptorInterface::class)
- ->disableOriginalConstructor()
- ->setMethods(['setNewKey', 'exportKeys'])
- ->getMockForAbstractClass();
- $this->filesystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->structureMock = $this->getMockBuilder(\Magento\Config\Model\Config\Structure::class)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->writerMock = $this->getMockBuilder(\Magento\Framework\App\DeploymentConfig\Writer::class)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->adapterMock = $this->getMockBuilder(\Magento\Framework\DB\Adapter\AdapterInterface::class)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->resourceMock = $this->getMockBuilder(\Magento\Framework\App\ResourceConnection::class)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->selectMock = $this->getMockBuilder(\Magento\Framework\DB\Select::class)
- ->disableOriginalConstructor()
- ->setMethods(['from', 'where', 'update'])
- ->getMock();
- $translationClassName = \Magento\Framework\Model\ResourceModel\Db\TransactionManagerInterface::class;
- $this->transactionMock = $this->getMockBuilder($translationClassName)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $relationClassName = \Magento\Framework\Model\ResourceModel\Db\ObjectRelationProcessor::class;
- $this->objRelationMock = $this->getMockBuilder($relationClassName)
- ->disableOriginalConstructor()
- ->setMethods([])
- ->getMock();
- $this->randomMock = $this->createMock(\Magento\Framework\Math\Random::class);
- $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->model = $helper->getObject(
- \Magento\EncryptionKey\Model\ResourceModel\Key\Change::class,
- [
- 'filesystem' => $this->filesystemMock,
- 'structure' => $this->structureMock,
- 'encryptor' => $this->encryptMock,
- 'writer' => $this->writerMock,
- 'adapterInterface' => $this->adapterMock,
- 'resource' => $this->resourceMock,
- 'transactionManager' => $this->transactionMock,
- 'relationProcessor' => $this->objRelationMock,
- 'random' => $this->randomMock
- ]
- );
- }
- private function setUpChangeEncryptionKey()
- {
- $paths = ['path1', 'path2'];
- $table = ['item1', 'item2'];
- $values = [
- 'key1' => 'value1',
- 'key2' => 'value2'
- ];
- $this->writerMock->expects($this->once())->method('checkIfWritable')->willReturn(true);
- $this->resourceMock->expects($this->atLeastOnce())->method('getConnection')->willReturn($this->adapterMock);
- $this->adapterMock->expects($this->once())->method('beginTransaction');
- $this->structureMock->expects($this->once())->method('getFieldPathsByAttribute')->willReturn($paths);
- $this->resourceMock->expects($this->atLeastOnce())->method('getTableName')->willReturn($table);
- $this->adapterMock->expects($this->any())->method('select')->willReturn($this->selectMock);
- $this->adapterMock->expects($this->any())->method('fetchPairs')->willReturn($values);
- $this->selectMock->expects($this->any())->method('from')->willReturnSelf();
- $this->selectMock->expects($this->atLeastOnce())->method('where')->willReturnSelf();
- $this->selectMock->expects($this->any())->method('update')->willReturnSelf();
- $this->writerMock->expects($this->once())->method('saveConfig');
- $this->adapterMock->expects($this->once())->method('getTransactionLevel')->willReturn(1);
- }
- public function testChangeEncryptionKey()
- {
- $this->setUpChangeEncryptionKey();
- $this->randomMock->expects($this->never())->method('getRandomString');
- $key = 'key';
- $this->assertEquals($key, $this->model->changeEncryptionKey($key));
- }
- public function testChangeEncryptionKeyAutogenerate()
- {
- $this->setUpChangeEncryptionKey();
- $this->randomMock->expects($this->once())->method('getRandomString')->willReturn('abc');
- $this->assertEquals(md5('abc'), $this->model->changeEncryptionKey());
- }
- public function testChangeEncryptionKeyThrowsException()
- {
- $key = 'key';
- $this->writerMock->expects($this->once())->method('checkIfWritable')->willReturn(false);
- try {
- $this->model->changeEncryptionKey($key);
- } catch (\Exception $e) {
- return;
- }
- $this->fail('An expected exception was not signaled.');
- }
- }
|