EncryptedTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Config\Test\Unit\Model\Config\Backend;
  7. class EncryptedTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /** @var \PHPUnit_Framework_MockObject_MockObject */
  10. protected $_encryptorMock;
  11. /** @var \PHPUnit_Framework_MockObject_MockObject */
  12. protected $_configMock;
  13. /** @var \PHPUnit_Framework_MockObject_MockObject */
  14. protected $_resourceMock;
  15. /** @var \Magento\Config\Model\Config\Backend\Encrypted */
  16. protected $_model;
  17. protected function setUp()
  18. {
  19. $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  20. $eventDispatcherMock = $this->createMock(\Magento\Framework\Event\Manager::class);
  21. $contextMock = $this->createMock(\Magento\Framework\Model\Context::class);
  22. $contextMock->expects(
  23. $this->any()
  24. )->method(
  25. 'getEventDispatcher'
  26. )->will(
  27. $this->returnValue($eventDispatcherMock)
  28. );
  29. $this->_resourceMock = $this->createPartialMock(
  30. \Magento\Framework\Model\ResourceModel\AbstractResource::class,
  31. [
  32. '_construct',
  33. 'getConnection',
  34. 'getIdFieldName',
  35. 'beginTransaction',
  36. 'save',
  37. 'commit',
  38. 'addCommitCallback',
  39. ]
  40. );
  41. $this->_configMock = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
  42. $this->_encryptorMock = $this->createMock(\Magento\Framework\Encryption\EncryptorInterface::class);
  43. $this->_model = $helper->getObject(
  44. \Magento\Config\Model\Config\Backend\Encrypted::class,
  45. [
  46. 'config' => $this->_configMock,
  47. 'context' => $contextMock,
  48. 'resource' => $this->_resourceMock,
  49. 'encryptor' => $this->_encryptorMock
  50. ]
  51. );
  52. }
  53. public function testProcessValue()
  54. {
  55. $value = 'someValue';
  56. $result = 'some value from parent class';
  57. $this->_encryptorMock->expects(
  58. $this->once()
  59. )->method(
  60. 'decrypt'
  61. )->with(
  62. $value
  63. )->will(
  64. $this->returnValue($result)
  65. );
  66. $this->assertEquals($result, $this->_model->processValue($value));
  67. }
  68. /**
  69. * @covers \Magento\Config\Model\Config\Backend\Encrypted::beforeSave
  70. * @dataProvider beforeSaveDataProvider
  71. *
  72. * @param string $value
  73. * @param string $expectedValue
  74. * @param int $encryptMethodCall
  75. */
  76. public function testBeforeSave($value, $expectedValue, $encryptMethodCall)
  77. {
  78. $this->_encryptorMock->expects($this->exactly($encryptMethodCall))
  79. ->method('encrypt')
  80. ->with($value)
  81. ->will($this->returnValue('encrypted'));
  82. $this->_model->setValue($value);
  83. $this->_model->setPath('some/path');
  84. $this->_model->beforeSave();
  85. $this->assertEquals($expectedValue, $this->_model->getValue());
  86. }
  87. /**
  88. * @return array
  89. */
  90. public function beforeSaveDataProvider()
  91. {
  92. return [['someValue', 'encrypted', 1], ['****', '****', 0]];
  93. }
  94. /**
  95. * @covers \Magento\Config\Model\Config\Backend\Encrypted::beforeSave
  96. */
  97. public function testAllowEmptySave()
  98. {
  99. $this->_model->setValue('');
  100. $this->_model->setPath('some/path');
  101. $this->_model->beforeSave();
  102. $this->assertTrue($this->_model->isSaveAllowed());
  103. }
  104. }