123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Webapi;
- use Magento\Customer\Api\AccountManagementTest;
- use Magento\TestFramework\Helper\Bootstrap;
- use Magento\TestFramework\Helper\Customer as CustomerHelper;
- class PartialResponseTest extends \Magento\TestFramework\TestCase\WebapiAbstract
- {
- /** @var CustomerHelper */
- protected $customerHelper;
- /** @var string */
- protected $customerData;
- protected function setUp()
- {
- $this->_markTestAsRestOnly('Partial response functionality available in REST mode only.');
- $this->customerHelper = Bootstrap::getObjectManager()
- ->get(\Magento\TestFramework\Helper\Customer::class);
- $this->customerData = $this->customerHelper->createSampleCustomer();
- }
- public function testCustomerWithEmailFilter()
- {
- $filter = 'email';
- $expected = ['email' => $this->customerData['email']];
- $result = $this->_getCustomerWithFilter($filter, $this->customerData['id']);
- $this->assertEquals($expected, $result);
- }
- public function testCustomerWithEmailAndAddressFilter()
- {
- $filter = 'email,addresses[city]';
- $expected = [
- 'email' => $this->customerData['email'],
- 'addresses' => [
- ['city' => CustomerHelper::ADDRESS_CITY1],
- ['city' => CustomerHelper::ADDRESS_CITY2],
- ],
- ];
- $result = $this->_getCustomerWithFilter($filter, $this->customerData['id']);
- $this->assertEquals($expected, $result);
- }
- public function testCustomerWithNestedAddressFilter()
- {
- $filter = 'addresses[region[region_code]]';
- $expected = [
- 'addresses' => [
- ['region' => ['region_code' => CustomerHelper::ADDRESS_REGION_CODE1]],
- ['region' => ['region_code' => CustomerHelper::ADDRESS_REGION_CODE2]],
- ],
- ];
- $result = $this->_getCustomerWithFilter($filter, $this->customerData['id']);
- $this->assertEquals($expected, $result);
- }
- public function testCustomerInvalidFilter()
- {
- // Invalid filter should return an empty result
- $result = $this->_getCustomerWithFilter('invalid', $this->customerData['id']);
- $this->assertEmpty($result);
- }
- public function testFilterForCustomerApiWithSimpleResponse()
- {
- $result = $this->_getCustomerWithFilter('customers', $this->customerData['id'], '/permissions/readonly');
- // assert if filter is ignored and a normal response is returned
- $this->assertFalse($result);
- }
- protected function _getCustomerWithFilter($filter, $customerId, $path = '')
- {
- $resourcePath = sprintf(
- '%s/%d%s?fields=%s',
- AccountManagementTest::RESOURCE_PATH,
- $customerId,
- $path,
- $filter
- );
- $serviceInfo = [
- 'rest' => [
- 'resourcePath' => $resourcePath,
- 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
- ],
- ];
- return $this->_webApiCall($serviceInfo);
- }
- }
|