customerTokenService = Bootstrap::getObjectManager()->get(CustomerTokenServiceInterface::class); $this->lockCustomer = Bootstrap::getObjectManager()->get(LockCustomer::class); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testUpdateCustomer(): void { $currentEmail = 'customer@example.com'; $currentPassword = 'password'; $newPrefix = 'Dr'; $newFirstname = 'Richard'; $newMiddlename = 'Riley'; $newLastname = 'Rowe'; $newSuffix = 'III'; $newDob = '3/11/1972'; $newTaxVat = 'GQL1234567'; $newGender = 2; $query = <<graphQlMutation( $query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword) ); $this->assertEquals($newPrefix, $response['updateCustomerV2']['customer']['prefix']); $this->assertEquals($newFirstname, $response['updateCustomerV2']['customer']['firstname']); $this->assertEquals($newMiddlename, $response['updateCustomerV2']['customer']['middlename']); $this->assertEquals($newLastname, $response['updateCustomerV2']['customer']['lastname']); $this->assertEquals($newSuffix, $response['updateCustomerV2']['customer']['suffix']); $this->assertEquals($newDob, $response['updateCustomerV2']['customer']['date_of_birth']); $this->assertEquals($newTaxVat, $response['updateCustomerV2']['customer']['taxvat']); $this->assertEquals($newGender, $response['updateCustomerV2']['customer']['gender']); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testUpdateCustomerIfInputDataIsEmpty(): void { $this->expectException(Exception::class); $this->expectExceptionMessage('"input" value should be specified'); $currentEmail = 'customer@example.com'; $currentPassword = 'password'; $query = <<graphQlMutation($query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword)); } /** */ public function testUpdateCustomerIfUserIsNotAuthorized(): void { $this->expectException(Exception::class); $this->expectExceptionMessage('The current customer isn\'t authorized.'); $newFirstname = 'Richard'; $query = <<graphQlMutation($query); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testUpdateCustomerIfAccountIsLocked(): void { $this->expectException(Exception::class); $this->expectExceptionMessage('The account is locked.'); $this->lockCustomer->execute(1); $currentEmail = 'customer@example.com'; $currentPassword = 'password'; $newFirstname = 'Richard'; $query = <<graphQlMutation($query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword)); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testEmptyCustomerName(): void { $this->expectException(Exception::class); $this->expectExceptionMessage('Required parameters are missing: First Name'); $currentEmail = 'customer@example.com'; $currentPassword = 'password'; $query = <<graphQlMutation($query, [], '', $this->getCustomerAuthHeaders($currentEmail, $currentPassword)); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testEmptyCustomerLastName(): void { $query = <<expectException(Exception::class); $this->expectExceptionMessage('Required parameters are missing: Last Name'); $this->graphQlMutation($query, [], '', $this->getCustomerAuthHeaders('customer@example.com', 'password')); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testUpdateCustomerIfDobIsInvalid(): void { $invalidDob = 'bla-bla-bla'; $query = <<expectException(Exception::class); $this->expectExceptionMessage('Invalid date'); $this->graphQlMutation($query, [], '', $this->getCustomerAuthHeaders('customer@example.com', 'password')); } /** * @param string $email * @param string $password * @return array * @throws AuthenticationException */ private function getCustomerAuthHeaders(string $email, string $password): array { $customerToken = $this->customerTokenService->createCustomerAccessToken($email, $password); return ['Authorization' => 'Bearer ' . $customerToken]; } }