/** * Populate customer model * * @param Quote $quote * @return void */ public function populateCustomerInfo(QuoteEntity $quote) { $customer = $quote->getCustomer(); if (!$customer->getId()) { $customer = $this->accountManagement->createAccountWithPasswordHash($customer, $quote->getPasswordHash()); $quote->setCustomer($customer); } else { $this->customerRepository->save($customer); } if (!$quote->getBillingAddress()->getId() && $customer->getDefaultBilling()) { $quote->getBillingAddress()->importCustomerAddressData($this->customerAddressRepository->getById($customer->getDefaultBilling())); $quote->getBillingAddress()->setCustomerAddressId($customer->getDefaultBilling()); } if (!$quote->getShippingAddress()->getSameAsBilling() && !$quote->getBillingAddress()->getId() && $customer->getDefaultShipping()) { $quote->getShippingAddress()->importCustomerAddressData($this->customerAddressRepository->getById($customer->getDefaultShipping())); $quote->getShippingAddress()->setCustomerAddressId($customer->getDefaultShipping()); } }
/** * @magentoDbIsolation enabled */ public function testCreateNewCustomerWithPasswordHash() { $email = '*****@*****.**'; $storeId = 1; $firstname = 'Tester'; $lastname = 'McTest'; $groupId = 1; $newCustomerEntity = $this->customerFactory->create()->setStoreId($storeId)->setEmail($email)->setFirstname($firstname)->setLastname($lastname)->setGroupId($groupId); /** @var \Magento\Framework\Math\Random $mathRandom */ $password = $this->objectManager->get('Magento\\Framework\\Math\\Random')->getRandomString(AccountManagement::MIN_PASSWORD_LENGTH); /** @var \Magento\Framework\Encryption\EncryptorInterface $encryptor */ $encryptor = $this->objectManager->get('Magento\\Framework\\Encryption\\EncryptorInterface'); $passwordHash = $encryptor->getHash($password, true); $savedCustomer = $this->accountManagement->createAccountWithPasswordHash($newCustomerEntity, $passwordHash); $this->assertNotNull($savedCustomer->getId()); $this->assertEquals($email, $savedCustomer->getEmail()); $this->assertEquals($storeId, $savedCustomer->getStoreId()); $this->assertEquals($firstname, $savedCustomer->getFirstname()); $this->assertEquals($lastname, $savedCustomer->getLastname()); $this->assertEquals($groupId, $savedCustomer->getGroupId()); $this->assertTrue(!$savedCustomer->getSuffix()); $this->assertEquals($savedCustomer->getId(), $this->accountManagement->authenticate($email, $password)->getId()); }