EditTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Test\Unit\Block\Role\Tab;
  7. /**
  8. * Class EditTest to cover Magento\User\Block\Role\Tab\Edit
  9. *
  10. */
  11. class EditTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /** @var \Magento\User\Block\Role\Tab\Edit */
  14. protected $model;
  15. /** @var \Magento\Framework\Acl\RootResource|\PHPUnit_Framework_MockObject_MockObject */
  16. protected $rootResourceMock;
  17. /** @var \PHPUnit_Framework_MockObject_MockObject */
  18. protected $rulesCollectionFactoryMock;
  19. /** @var \Magento\Authorization\Model\Acl\AclRetriever|\PHPUnit_Framework_MockObject_MockObject */
  20. protected $aclRetrieverMock;
  21. /** @var \Magento\Framework\Acl\AclResource\ProviderInterface|\PHPUnit_Framework_MockObject_MockObject */
  22. protected $aclResourceProviderMock;
  23. /** @var \Magento\Integration\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
  24. protected $integrationDataMock;
  25. /** @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject */
  26. protected $coreRegistryMock;
  27. /** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager */
  28. protected $objectManagerHelper;
  29. protected function setUp()
  30. {
  31. $this->rootResourceMock = $this->getMockBuilder(\Magento\Framework\Acl\RootResource::class)
  32. ->disableOriginalConstructor()
  33. ->setMethods([])
  34. ->getMock();
  35. $this->rulesCollectionFactoryMock = $this
  36. ->getMockBuilder(\Magento\Authorization\Model\ResourceModel\Rules\CollectionFactory::class)
  37. ->disableOriginalConstructor()
  38. ->setMethods(['create'])
  39. ->getMock();
  40. $this->aclRetrieverMock = $this->getMockBuilder(\Magento\Authorization\Model\Acl\AclRetriever::class)
  41. ->disableOriginalConstructor()
  42. ->setMethods([])
  43. ->getMock();
  44. $this->aclResourceProviderMock = $this->getMockBuilder(
  45. \Magento\Framework\Acl\AclResource\ProviderInterface::class
  46. )->disableOriginalConstructor()
  47. ->setMethods([])
  48. ->getMock();
  49. $this->integrationDataMock = $this->getMockBuilder(\Magento\Integration\Helper\Data::class)
  50. ->disableOriginalConstructor()
  51. ->setMethods([])
  52. ->getMock();
  53. $this->coreRegistryMock = $this->getMockBuilder(\Magento\Framework\Registry::class)
  54. ->disableOriginalConstructor()
  55. ->setMethods(['registry'])
  56. ->getMock();
  57. $this->objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  58. $this->model = $this->objectManagerHelper->getObject(
  59. \Magento\User\Block\Role\Tab\Edit::class,
  60. [
  61. 'aclRetriever' => $this->aclRetrieverMock,
  62. 'rootResource' => $this->rootResourceMock,
  63. 'rulesCollectionFactory' => $this->rulesCollectionFactoryMock,
  64. 'aclResourceProvider' => $this->aclResourceProviderMock,
  65. 'integrationData' => $this->integrationDataMock,
  66. ]
  67. );
  68. $this->model->setCoreRegistry($this->coreRegistryMock);
  69. }
  70. public function testGetTree()
  71. {
  72. $resources = [
  73. ['id' => 'Magento_Backend::admin', 'children' => ['resource1', 'resource2', 'resource3']],
  74. ['id' => 'Invalid_Node', 'children' => ['resource4', 'resource5', 'resource6']]
  75. ];
  76. $mappedResources = ['mapped1', 'mapped2', 'mapped3'];
  77. $this->aclResourceProviderMock->expects($this->once())->method('getAclResources')->willReturn($resources);
  78. $this->integrationDataMock->expects($this->once())->method('mapResources')->willReturn($mappedResources);
  79. $this->assertEquals($mappedResources, $this->model->getTree());
  80. }
  81. /**
  82. * @param bool $isAllowed
  83. * @dataProvider dataProviderBoolValues
  84. */
  85. public function testIsEverythingAllowed($isAllowed)
  86. {
  87. $id = 10;
  88. $this->coreRegistryMock->expects($this->once())
  89. ->method('registry')
  90. ->with(\Magento\User\Controller\Adminhtml\User\Role\SaveRole::RESOURCE_ALL_FORM_DATA_SESSION_KEY)
  91. ->willReturn(true);
  92. if ($isAllowed) {
  93. $this->rootResourceMock->expects($this->exactly(2))
  94. ->method('getId')
  95. ->willReturnOnConsecutiveCalls($id, $id);
  96. } else {
  97. $this->rootResourceMock->expects($this->exactly(2))
  98. ->method('getId')
  99. ->willReturnOnConsecutiveCalls(11, $id);
  100. }
  101. $this->assertEquals($isAllowed, $this->model->isEverythingAllowed());
  102. }
  103. /**
  104. * @return array
  105. */
  106. public function dataProviderBoolValues()
  107. {
  108. return [[true], [false]];
  109. }
  110. }