ParamsOverriderTest.php 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Webapi\Test\Unit\Controller\Rest;
  7. use \Magento\Authorization\Model\UserContextInterface;
  8. /**
  9. * Test Magento\Webapi\Controller\Rest\ParamsOverrider
  10. */
  11. class ParamsOverriderTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @param array $requestData Data from the request
  15. * @param array $parameters Data from config about which parameters to override
  16. * @param array $expectedOverriddenParams Result of overriding $requestData when applying rules from $parameters
  17. * @param int $userId The id of the user invoking the request
  18. * @param int $userType The type of user invoking the request
  19. *
  20. * @dataProvider overrideParamsDataProvider
  21. */
  22. public function testOverrideParams($requestData, $parameters, $expectedOverriddenParams, $userId, $userType)
  23. {
  24. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  25. $userContextMock = $this->getMockBuilder(\Magento\Authorization\Model\UserContextInterface::class)
  26. ->disableOriginalConstructor()->setMethods(['getUserId', 'getUserType'])->getMockForAbstractClass();
  27. $userContextMock->expects($this->any())->method('getUserId')->will($this->returnValue($userId));
  28. $userContextMock->expects($this->any())->method('getUserType')->will($this->returnValue($userType));
  29. $paramOverriderCustomerId = $objectManager->getObject(
  30. \Magento\Webapi\Controller\Rest\ParamOverriderCustomerId::class,
  31. ['userContext' => $userContextMock]
  32. );
  33. /** @var \Magento\Webapi\Controller\Rest\ParamsOverrider $paramsOverrider */
  34. $paramsOverrider = $objectManager->getObject(
  35. \Magento\Webapi\Controller\Rest\ParamsOverrider::class,
  36. ['paramOverriders' => ['%customer_id%' => $paramOverriderCustomerId ]]
  37. );
  38. $this->assertEquals($expectedOverriddenParams, $paramsOverrider->override($requestData, $parameters));
  39. }
  40. /**
  41. * @return array
  42. */
  43. public function overrideParamsDataProvider()
  44. {
  45. return [
  46. 'force false, value present' => [
  47. ['Name1' => 'valueIn'],
  48. ['Name1' => ['force' => false, 'value' => 'valueOverride']],
  49. ['Name1' => 'valueIn'],
  50. 1,
  51. UserContextInterface::USER_TYPE_INTEGRATION,
  52. ],
  53. 'force true, value present' => [
  54. ['Name1' => 'valueIn'],
  55. ['Name1' => ['force' => true, 'value' => 'valueOverride']],
  56. ['Name1' => 'valueOverride'],
  57. 1,
  58. UserContextInterface::USER_TYPE_INTEGRATION,
  59. ],
  60. 'force true, value not present' => [
  61. ['Name1' => 'valueIn'],
  62. ['Name2' => ['force' => true, 'value' => 'valueOverride']],
  63. ['Name1' => 'valueIn', 'Name2' => 'valueOverride'],
  64. 1,
  65. UserContextInterface::USER_TYPE_INTEGRATION,
  66. ],
  67. 'force false, value not present' => [
  68. ['Name1' => 'valueIn'],
  69. ['Name2' => ['force' => false, 'value' => 'valueOverride']],
  70. ['Name1' => 'valueIn', 'Name2' => 'valueOverride'],
  71. 1,
  72. UserContextInterface::USER_TYPE_INTEGRATION,
  73. ],
  74. 'force true, value present, override value is %customer_id%' => [
  75. ['Name1' => 'valueIn'],
  76. ['Name1' => ['force' => true, 'value' => '%customer_id%']],
  77. ['Name1' => '1234'],
  78. 1234,
  79. UserContextInterface::USER_TYPE_CUSTOMER,
  80. ],
  81. 'force true, value present, override value is %customer_id%, not a customer' => [
  82. ['Name1' => 'valueIn'],
  83. ['Name1' => ['force' => true, 'value' => '%customer_id%']],
  84. ['Name1' => null],
  85. 1234,
  86. UserContextInterface::USER_TYPE_INTEGRATION,
  87. ],
  88. ];
  89. }
  90. }