mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
128 lines
4.9 KiB
PHP
128 lines
4.9 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Webapi\Test\Unit\Controller\Rest;
|
|
|
|
use Magento\Authorization\Model\UserContextInterface;
|
|
use Magento\Framework\Api\SimpleDataObjectConverter;
|
|
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
|
|
use Magento\Webapi\Controller\Rest\ParamOverriderCustomerId;
|
|
use Magento\Webapi\Controller\Rest\ParamsOverrider;
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Test Magento\Webapi\Controller\Rest\ParamsOverrider
|
|
*/
|
|
class ParamsOverriderTest extends TestCase
|
|
{
|
|
/**
|
|
* @param array $requestData Data from the request
|
|
* @param array $parameters Data from config about which parameters to override
|
|
* @param array $expectedOverriddenParams Result of overriding $requestData when applying rules from $parameters
|
|
* @param int $userId The id of the user invoking the request
|
|
* @param int $userType The type of user invoking the request
|
|
*
|
|
* @dataProvider overrideParamsDataProvider
|
|
*/
|
|
public function testOverrideParams($requestData, $parameters, $expectedOverriddenParams, $userId, $userType)
|
|
{
|
|
$objectManager = new ObjectManager($this);
|
|
|
|
$userContextMock = $this->getMockBuilder(UserContextInterface::class)
|
|
->disableOriginalConstructor()
|
|
->setMethods(['getUserId', 'getUserType'])->getMockForAbstractClass();
|
|
$userContextMock->expects($this->any())->method('getUserId')->willReturn($userId);
|
|
$userContextMock->expects($this->any())->method('getUserType')->willReturn($userType);
|
|
|
|
$paramOverriderCustomerId = $objectManager->getObject(
|
|
ParamOverriderCustomerId::class,
|
|
['userContext' => $userContextMock]
|
|
);
|
|
|
|
/** @var MockObject $objectConverter */
|
|
$objectConverter = $this->getMockBuilder(SimpleDataObjectConverter::class)
|
|
->disableOriginalConstructor()
|
|
->setMethods(['convertKeysToCamelCase'])
|
|
->getMock();
|
|
$objectConverter->expects($this->any())
|
|
->method('convertKeysToCamelCase')
|
|
->willReturnCallback(
|
|
function (array $array) {
|
|
$converted = [];
|
|
foreach ($array as $key => $value) {
|
|
$converted[mb_strtolower($key)] = $value;
|
|
}
|
|
|
|
return $converted;
|
|
}
|
|
);
|
|
|
|
/** @var ParamsOverrider $paramsOverrider */
|
|
$paramsOverrider = $objectManager->getObject(
|
|
ParamsOverrider::class,
|
|
[
|
|
'paramOverriders' => ['%customer_id%' => $paramOverriderCustomerId ],
|
|
'dataObjectConverter' => $objectConverter
|
|
]
|
|
);
|
|
|
|
$this->assertEquals($expectedOverriddenParams, $paramsOverrider->override($requestData, $parameters));
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function overrideParamsDataProvider()
|
|
{
|
|
return [
|
|
'force false, value present' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name1' => ['force' => false, 'value' => 'valueOverride']],
|
|
['Name1' => 'valueIn'],
|
|
1,
|
|
UserContextInterface::USER_TYPE_INTEGRATION,
|
|
],
|
|
'force true, value present' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name1' => ['force' => true, 'value' => 'valueOverride']],
|
|
['Name1' => 'valueOverride'],
|
|
1,
|
|
UserContextInterface::USER_TYPE_INTEGRATION,
|
|
],
|
|
'force true, value not present' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name2' => ['force' => true, 'value' => 'valueOverride']],
|
|
['Name1' => 'valueIn', 'Name2' => 'valueOverride'],
|
|
1,
|
|
UserContextInterface::USER_TYPE_INTEGRATION,
|
|
],
|
|
'force false, value not present' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name2' => ['force' => false, 'value' => 'valueOverride']],
|
|
['Name1' => 'valueIn', 'Name2' => 'valueOverride'],
|
|
1,
|
|
UserContextInterface::USER_TYPE_INTEGRATION,
|
|
],
|
|
'force true, value present, override value is %customer_id%' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name1' => ['force' => true, 'value' => '%customer_id%']],
|
|
['Name1' => '1234'],
|
|
1234,
|
|
UserContextInterface::USER_TYPE_CUSTOMER,
|
|
],
|
|
'force true, value present, override value is %customer_id%, not a customer' => [
|
|
['Name1' => 'valueIn'],
|
|
['Name1' => ['force' => true, 'value' => '%customer_id%']],
|
|
['Name1' => null],
|
|
1234,
|
|
UserContextInterface::USER_TYPE_INTEGRATION,
|
|
],
|
|
];
|
|
}
|
|
}
|