RulesTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Authorization\Model;
  7. /**
  8. * @magentoAppArea adminhtml
  9. */
  10. class RulesTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Authorization\Model\Rules
  14. */
  15. protected $_model;
  16. /**
  17. * @var \Magento\User\Model\User
  18. */
  19. protected $user;
  20. protected function setUp()
  21. {
  22. $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  23. \Magento\Authorization\Model\Rules::class
  24. );
  25. $this->user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  26. \Magento\User\Model\User::class
  27. );
  28. }
  29. /**
  30. * @magentoDbIsolation enabled
  31. */
  32. public function testCRUD()
  33. {
  34. $this->_model
  35. ->setRoleType('G')
  36. ->setResourceId('Magento_Backend::all')
  37. ->setPrivileges("")
  38. ->setAssertId(0)
  39. ->setRoleId(1)
  40. ->setPermission('allow');
  41. $crud = new \Magento\TestFramework\Entity($this->_model, ['permission' => 'deny']);
  42. $crud->testCrud();
  43. }
  44. /**
  45. * @magentoDbIsolation enabled
  46. */
  47. public function testInitialUserPermissions()
  48. {
  49. $expectedDefaultPermissions = ['Magento_Backend::all'];
  50. $this->_checkExistingPermissions($expectedDefaultPermissions);
  51. }
  52. /**
  53. * @covers \Magento\Authorization\Model\Rules::saveRel
  54. * @magentoDbIsolation enabled
  55. */
  56. public function testSetAllowForAllResources()
  57. {
  58. $resources = ['Magento_Backend::all'];
  59. $this->user->loadByUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME);
  60. $roleId = $this->user->getRole()->getRoleId();
  61. $this->_model->setRoleId($roleId)->setResources($resources)->saveRel();
  62. $expectedPermissions = ['Magento_Backend::all'];
  63. $this->_checkExistingPermissions($expectedPermissions);
  64. }
  65. /**
  66. * Ensure that only expected permissions are set.
  67. */
  68. protected function _checkExistingPermissions($expectedDefaultPermissions)
  69. {
  70. $connection = $this->_model->getResource()->getConnection();
  71. $this->user->loadByUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME);
  72. $roleId = $this->user->getRole()->getRoleId();
  73. $ruleSelect = $connection->select()
  74. ->from($this->_model->getResource()->getMainTable())
  75. ->where('role_id = ?', $roleId);
  76. $rules = $ruleSelect->query()->fetchAll();
  77. $actualPermissions = [];
  78. foreach ($rules as $rule) {
  79. $actualPermissions[] = $rule['resource_id'];
  80. $this->assertEquals(
  81. 'allow',
  82. $rule['permission'],
  83. "Permission for '{$rule['resource_id']}' resource should be 'allow'"
  84. );
  85. }
  86. $this->assertEquals($expectedDefaultPermissions, $actualPermissions, 'Default permissions are invalid');
  87. }
  88. }