ProviderTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Acl\Test\Unit\AclResource;
  7. class ProviderTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Framework\Acl\AclResource\Provider
  11. */
  12. protected $_model;
  13. /**
  14. * @var \PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $_configReaderMock;
  17. /**
  18. * @var \PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $_treeBuilderMock;
  21. /**
  22. * @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. private $serializerMock;
  25. /**
  26. * @var \Magento\Framework\Acl\Data\CacheInterface|\PHPUnit_Framework_MockObject_MockObject
  27. */
  28. private $aclDataCacheMock;
  29. protected function setUp()
  30. {
  31. $this->_configReaderMock = $this->createMock(\Magento\Framework\Config\ReaderInterface::class);
  32. $this->_treeBuilderMock = $this->createMock(\Magento\Framework\Acl\AclResource\TreeBuilder::class);
  33. $this->serializerMock = $this->createPartialMock(
  34. \Magento\Framework\Serialize\Serializer\Json::class,
  35. ['serialize', 'unserialize']
  36. );
  37. $this->serializerMock->expects($this->any())
  38. ->method('serialize')
  39. ->will(
  40. $this->returnCallback(
  41. function ($value) {
  42. return json_encode($value);
  43. }
  44. )
  45. );
  46. $this->serializerMock->expects($this->any())
  47. ->method('unserialize')
  48. ->will(
  49. $this->returnCallback(
  50. function ($value) {
  51. return json_decode($value, true);
  52. }
  53. )
  54. );
  55. $this->aclDataCacheMock = $this->createMock(\Magento\Framework\Acl\Data\CacheInterface::class);
  56. $this->_model = new \Magento\Framework\Acl\AclResource\Provider(
  57. $this->_configReaderMock,
  58. $this->_treeBuilderMock,
  59. $this->aclDataCacheMock,
  60. $this->serializerMock
  61. );
  62. }
  63. public function testGetIfAclResourcesExist()
  64. {
  65. $aclResourceConfig['config']['acl']['resources'] = ['ExpectedValue'];
  66. $this->_configReaderMock->expects($this->once())->method('read')->will($this->returnValue($aclResourceConfig));
  67. $this->_treeBuilderMock->expects($this->once())->method('build')->will($this->returnValue('ExpectedResult'));
  68. $this->aclDataCacheMock->expects($this->once())->method('save')->with(
  69. json_encode('ExpectedResult'),
  70. \Magento\Framework\Acl\AclResource\Provider::ACL_RESOURCES_CACHE_KEY
  71. );
  72. $this->assertEquals('ExpectedResult', $this->_model->getAclResources());
  73. }
  74. public function testGetIfAclResourcesExistInCache()
  75. {
  76. $this->_configReaderMock->expects($this->never())->method('read');
  77. $this->_treeBuilderMock->expects($this->never())->method('build');
  78. $this->aclDataCacheMock->expects($this->once())
  79. ->method('load')
  80. ->with(\Magento\Framework\Acl\AclResource\Provider::ACL_RESOURCES_CACHE_KEY)
  81. ->will($this->returnValue(json_encode('ExpectedResult')));
  82. $this->assertEquals('ExpectedResult', $this->_model->getAclResources());
  83. }
  84. public function testGetIfAclResourcesEmpty()
  85. {
  86. $this->_configReaderMock->expects($this->once())->method('read')->will($this->returnValue([]));
  87. $this->_treeBuilderMock->expects($this->never())->method('build');
  88. $this->assertEquals([], $this->_model->getAclResources());
  89. }
  90. }