![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-integration/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Integration\Test\Unit\Model; use Magento\Authorization\Model\ResourceModel\Role\Collection; use Magento\Authorization\Model\ResourceModel\Role\CollectionFactory; use Magento\Authorization\Model\ResourceModel\Rules; use Magento\Authorization\Model\Role; use Magento\Authorization\Model\RoleFactory; use Magento\Authorization\Model\Rules as AuthorizationRules; use Magento\Authorization\Model\RulesFactory; use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\Acl\Builder; use Magento\Framework\Acl\RootResource; use Magento\Integration\Model\AuthorizationService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class AuthorizationServiceTest extends TestCase { /** * Sample role Id */ const ROLE_ID = 1; /** * Sample integration id */ const INTEGRATION_ID = 22; /** * @var MockObject|Role */ protected $roleMock; /** * @var AuthorizationService */ protected $integrationAuthorizationService; /** * @var MockObject|Rules */ protected $rulesMock; /** * @var MockObject|RootResource */ protected $rootAclResourceMock; /** * @var array */ protected $resources; protected function setUp(): void { $this->roleMock = $this->createPartialMock( Role::class, ['load', 'delete', '__wakeup', 'getId', 'save'] ); $this->roleMock->expects($this->any())->method('load')->willReturnSelf(); $this->roleMock->expects($this->any())->method('delete')->willReturnSelf(); $this->roleMock->expects($this->any())->method('save')->willReturnSelf(); /** @var MockObject|RoleFactory $roleFactoryMock */ $roleFactoryMock = $this->createPartialMock(RoleFactory::class, ['create']); $roleFactoryMock->expects($this->any())->method('create')->willReturn($this->roleMock); $roleCollectionFactoryMock = $this->createPartialMock( CollectionFactory::class, ['create'] ); $roleCollectionMock = $this->createPartialMock( Collection::class, ['setUserFilter', 'getFirstItem'] ); $roleCollectionMock->expects($this->any())->method('setUserFilter')->willReturnSelf(); $roleCollectionMock->expects($this->any())->method('getFirstItem')->willReturn($this->roleMock); $roleCollectionFactoryMock->expects($this->any()) ->method('create') ->willReturn($roleCollectionMock); $rulesFactoryMock = $this->createPartialMock(RulesFactory::class, ['create']); $this->rulesMock = $this->getMockBuilder(AuthorizationRules::class) ->addMethods(['setRoleId', 'setResources']) ->onlyMethods(['saveRel']) ->disableOriginalConstructor() ->getMock(); $rulesFactoryMock->expects($this->any()) ->method('create') ->willReturn($this->rulesMock); $this->rootAclResourceMock = $this->createPartialMock(RootResource::class, ['getId']); $this->integrationAuthorizationService = new AuthorizationService( $this->createMock(Builder::class), $roleFactoryMock, $roleCollectionFactoryMock, $rulesFactoryMock, $this->createMock(\Magento\Authorization\Model\ResourceModel\Rules\CollectionFactory::class), $this->getMockForAbstractClass(LoggerInterface::class), $this->rootAclResourceMock ); } public function testRemovePermissions() { $roleName = UserContextInterface::USER_TYPE_INTEGRATION . self::INTEGRATION_ID; $this->roleMock->expects($this->once())->method('load')->with($roleName)->willReturnSelf(); $this->integrationAuthorizationService->removePermissions(self::INTEGRATION_ID); } public function testRemovePermissionsException() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->expectExceptionMessage('Something went wrong while deleting roles and permissions.'); $roleName = UserContextInterface::USER_TYPE_INTEGRATION . self::INTEGRATION_ID; $this->roleMock->expects($this->once()) ->method('load') ->with($roleName) ->willThrowException(new \Exception()); $this->integrationAuthorizationService->removePermissions(self::INTEGRATION_ID); } public function testGrantPermissions() { $this->resources = [ 'Magento_Sales::sales', 'Magento_Sales::sales_operations', 'Magento_Cart::cart', 'Magento_Cart::manage' ]; $this->roleMock->expects($this->any())->method('getId')->willReturn(self::ROLE_ID); $this->rulesMock->expects($this->any())->method('setRoleId')->with(self::ROLE_ID)->willReturnSelf(); $this->rulesMock->expects($this->any()) ->method('setResources') ->with($this->resources)->willReturnSelf(); $this->rulesMock->expects($this->any())->method('saveRel')->willReturnSelf(); $result = $this->integrationAuthorizationService->grantPermissions(self::INTEGRATION_ID, $this->resources); $this->assertNull($result); } public function testGrantPermissionsNoRole() { $calculatedRoleId = UserContextInterface::USER_TYPE_INTEGRATION . self::INTEGRATION_ID; $this->resources = [ 'Magento_Sales::sales', 'Magento_Sales::sales_operations', 'Magento_Cart::cart', 'Magento_Cart::manage' ]; //Return invalid role $this->roleMock->expects($this->any()) ->method('getId') ->will($this->onConsecutiveCalls(null, $calculatedRoleId)); // Verify if the method is called with the newly created role $this->rulesMock->expects($this->any()) ->method('setRoleId') ->with($calculatedRoleId)->willReturnSelf(); $this->rulesMock->expects($this->any()) ->method('setResources') ->with($this->resources)->willReturnSelf(); $this->rulesMock->expects($this->any())->method('saveRel')->willReturnSelf(); $result = $this->integrationAuthorizationService->grantPermissions(self::INTEGRATION_ID, $this->resources); $this->assertNull($result); } public function testGrantPermissionsException() { $this->expectException('Magento\Framework\Exception\LocalizedException'); $this->resources = [ 'Magento_Sales::sales', 'Magento_Sales::sales_operations', 'Magento_Cart::cart', 'Magento_Cart::manage' ]; $this->roleMock->expects($this->any())->method('getId')->willReturn(self::ROLE_ID); $this->rulesMock->expects($this->any())->method('setRoleId')->with(self::ROLE_ID)->willReturnSelf(); $this->rulesMock->expects($this->any()) ->method('setResources') ->with($this->resources)->willReturnSelf(); $this->rulesMock->expects($this->any())->method('saveRel')->willThrowException(new \Exception()); $this->integrationAuthorizationService->grantPermissions(self::INTEGRATION_ID, $this->resources); $this->expectExceptionMessage( 'An error occurred during the attempt to grant permissions. For details, see the exceptions log.' ); } public function testGrantAllPermissions() { $rootResource = 'Magento_All:all'; $this->rootAclResourceMock->expects($this->any())->method('getId')->willReturn($rootResource); $this->roleMock->expects($this->any())->method('getId')->willReturn(self::ROLE_ID); $this->rulesMock->expects($this->any())->method('setRoleId')->with(self::ROLE_ID)->willReturnSelf(); $this->rulesMock->expects($this->any()) ->method('setResources') ->with([$rootResource])->willReturnSelf(); $this->rulesMock->expects($this->any())->method('saveRel')->willReturnSelf(); $result = $this->integrationAuthorizationService->grantAllPermissions(self::INTEGRATION_ID); $this->assertNull($result); } }