diff --git a/app/code/Magento/CustomerGraphQl/Model/Customer/GetCustomer.php b/app/code/Magento/CustomerGraphQl/Model/Customer/GetCustomer.php index 63f42ea1825a..812b3fd28352 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Customer/GetCustomer.php +++ b/app/code/Magento/CustomerGraphQl/Model/Customer/GetCustomer.php @@ -70,6 +70,7 @@ public function execute(ContextInterface $context): CustomerInterface try { $customer = $this->customerRepository->getById($currentUserId); + // @codeCoverageIgnoreStart } catch (NoSuchEntityException $e) { throw new GraphQlNoSuchEntityException( __('Customer with id "%customer_id" does not exist.', ['customer_id' => $currentUserId]), @@ -77,6 +78,7 @@ public function execute(ContextInterface $context): CustomerInterface ); } catch (LocalizedException $e) { throw new GraphQlInputException(__($e->getMessage())); + // @codeCoverageIgnoreEnd } if (true === $this->authentication->isLocked($currentUserId)) { @@ -85,8 +87,10 @@ public function execute(ContextInterface $context): CustomerInterface try { $confirmationStatus = $this->accountManagement->getConfirmationStatus($currentUserId); + // @codeCoverageIgnoreStart } catch (LocalizedException $e) { throw new GraphQlInputException(__($e->getMessage())); + // @codeCoverageIgnoreEnd } if ($confirmationStatus === AccountManagementInterface::ACCOUNT_CONFIRMATION_REQUIRED) { diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GetCustomerTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GetCustomerTest.php index b15a799ae752..b549d370466c 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GetCustomerTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/GetCustomerTest.php @@ -7,6 +7,8 @@ namespace Magento\GraphQl\Customer; +use Magento\Customer\Api\AccountManagementInterface; +use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Customer\Model\CustomerAuthUpdate; use Magento\Customer\Model\CustomerRegistry; use Magento\Integration\Api\CustomerTokenServiceInterface; @@ -30,13 +32,25 @@ class GetCustomerTest extends GraphQlAbstract */ private $customerAuthUpdate; + /** + * @var AccountManagementInterface + */ + private $accountManagement; + + /** + * @var CustomerRepositoryInterface + */ + private $customerRepository; + protected function setUp() { parent::setUp(); $this->customerTokenService = Bootstrap::getObjectManager()->get(CustomerTokenServiceInterface::class); + $this->accountManagement = Bootstrap::getObjectManager()->get(AccountManagementInterface::class); $this->customerRegistry = Bootstrap::getObjectManager()->get(CustomerRegistry::class); $this->customerAuthUpdate = Bootstrap::getObjectManager()->get(CustomerAuthUpdate::class); + $this->customerRepository = Bootstrap::getObjectManager()->get(CustomerRepositoryInterface::class); } /** @@ -57,7 +71,12 @@ public function testGetCustomer() } } QUERY; - $response = $this->graphQlQuery($query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword)); + $response = $this->graphQlQuery( + $query, + [], + '', + $this->getCustomerAuthHeaders($currentEmail, $currentPassword) + ); $this->assertEquals(null, $response['customer']['id']); $this->assertEquals('John', $response['customer']['firstname']); @@ -104,7 +123,28 @@ public function testGetCustomerIfAccountIsLocked() } } QUERY; - $this->graphQlQuery($query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword)); + $this->graphQlQuery( + $query, + [], + '', + $this->getCustomerAuthHeaders($currentEmail, $currentPassword) + ); + } + + /** + * @magentoApiDataFixture Magento/Customer/_files/customer_confirmation_config_enable.php + * @magentoApiDataFixture Magento/Customer/_files/customer.php + * @expectedException \Exception + * @expectedExceptionMessage The account sign-in was incorrect or your account is disabled temporarily + */ + public function testAccountIsNotConfirmed() + { + $confirmation_required = $this->accountManagement::ACCOUNT_CONFIRMATION_REQUIRED; + $customerEmail = 'customer@example.com'; + $currentPassword = 'password'; + $customer = $this->customerRepository->getById(1)->setConfirmation($confirmation_required); + $this->customerRepository->save($customer); + $this->getCustomerAuthHeaders($customerEmail, $currentPassword); } /**