/** * Convert SOAP operation arguments into format acceptable by service method. * * @param string $serviceClass * @param string $serviceMethod * @param array $arguments * @return array */ protected function _prepareRequestData($serviceClass, $serviceMethod, $arguments) { /** SoapServer wraps parameters into array. Thus this wrapping should be removed to get access to parameters. */ $arguments = reset($arguments); $arguments = $this->_dataObjectConverter->convertStdObjectToArray($arguments, true); return $this->_serializer->getInputData($serviceClass, $serviceMethod, $arguments); }
public function testConvertSoapStdObjectToArray() { $stdObject = json_decode(json_encode($this->getCustomerDetails()->__toArray()), false); $addresses = $stdObject->addresses; unset($stdObject->addresses); $stdObject->addresses = new \stdClass(); $stdObject->addresses->item = $addresses; $response = $this->dataObjectConverter->convertStdObjectToArray($stdObject); //Check array conversion $this->assertTrue(is_array($response['customer'])); $this->assertTrue(is_array($response['addresses'])); $this->assertEquals(2, count($response['addresses']['item'])); //Check if data is correct $this->assertEquals(self::FIRSTNAME, $response['customer']['firstname']); $this->assertEquals(self::GROUP_ID, $response['customer']['group_id']); foreach ($response['addresses']['item'] as $key => $address) { $region = $address['region']; $this->assertEquals(self::REGION, $region['region']); $this->assertEquals(self::REGION_CODE, $region['region_code']); $this->assertEquals(self::REGION_ID, $region['region_id']); $this->assertEquals($this->expectedStreet[$key], $address['street']); } }