/** * Post request for creating customer in frontend * * @param FixtureInterface|null $customer * @return array * @throws \Exception */ public function persist(FixtureInterface $customer = null) { $address = []; $result = []; /** @var CustomerInjectable $customer */ $url = $_ENV['app_frontend_url'] . 'customer/account/createpost/?nocookie=true'; $data = $customer->getData(); if ($customer->hasData('address')) { $address = $customer->getAddress(); unset($data['address']); } $curl = new CurlTransport(); $curl->write(CurlInterface::POST, $url, '1.0', [], $data); $response = $curl->read(); $curl->close(); if (!strpos($response, 'data-ui-id="global-messages-message-success"')) { throw new \Exception("Customer entity creating by curl handler was not successful! Response: {$response}"); } $result['id'] = $this->getCustomerId($customer->getEmail()); $data['customer_id'] = $result['id']; if (!empty($address)) { $data['address'] = $address; $this->addAddress($data); } return $result; }