_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); } }