![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/api-functional/testsuite/Magento/GraphQl/Customer/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\GraphQl\Customer; use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Framework\Registry; use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\TestCase\GraphQlAbstract; /** * Test for create customer functionality */ class CreateCustomerTest extends GraphQlAbstract { /** * @var Registry */ private $registry; /** * @var CustomerRepositoryInterface */ private $customerRepository; protected function setUp(): void { parent::setUp(); $this->registry = Bootstrap::getObjectManager()->get(Registry::class); $this->customerRepository = Bootstrap::getObjectManager()->get(CustomerRepositoryInterface::class); } /** * @throws \Exception */ public function testCreateCustomerAccountWithPassword() { $newFirstname = 'Richard'; $newLastname = 'Rowe'; $currentPassword = 'test123#'; $newEmail = '[email protected]'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$newFirstname}" lastname: "{$newLastname}" email: "{$newEmail}" password: "{$currentPassword}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $response = $this->graphQlMutation($query); $this->assertNull($response['createCustomer']['customer']['id']); $this->assertEquals($newFirstname, $response['createCustomer']['customer']['firstname']); $this->assertEquals($newLastname, $response['createCustomer']['customer']['lastname']); $this->assertEquals($newEmail, $response['createCustomer']['customer']['email']); $this->assertTrue($response['createCustomer']['customer']['is_subscribed']); } /** * @throws \Exception */ public function testCreateCustomerAccountWithoutPassword() { $newFirstname = 'Richard'; $newLastname = 'Rowe'; $newEmail = '[email protected]'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$newFirstname}" lastname: "{$newLastname}" email: "{$newEmail}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $response = $this->graphQlMutation($query); $this->assertEquals($newFirstname, $response['createCustomer']['customer']['firstname']); $this->assertEquals($newLastname, $response['createCustomer']['customer']['lastname']); $this->assertEquals($newEmail, $response['createCustomer']['customer']['email']); $this->assertTrue($response['createCustomer']['customer']['is_subscribed']); } /** */ public function testCreateCustomerIfInputDataIsEmpty() { $this->expectException(\Exception::class); $this->expectExceptionMessage('"input" value should be specified'); $query = <<<QUERY mutation { createCustomer( input: { } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $this->graphQlMutation($query); } /** */ public function testCreateCustomerIfEmailMissed() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Required parameters are missing: Email'); $newFirstname = 'Richard'; $newLastname = 'Rowe'; $currentPassword = 'test123#'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$newFirstname}" lastname: "{$newLastname}" password: "{$currentPassword}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $this->graphQlMutation($query); } /** * @dataProvider invalidEmailAddressDataProvider * * @param string $email * @throws \Exception */ public function testCreateCustomerIfEmailIsNotValid(string $email) { $firstname = 'Richard'; $lastname = 'Rowe'; $password = 'test123#'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$firstname}" lastname: "{$lastname}" email: "{$email}" password: "{$password}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $this->expectExceptionMessage('"' . $email . '" is not a valid email address.'); $this->graphQlMutation($query); } /** * @return array */ public function invalidEmailAddressDataProvider(): array { return [ ['plainaddress'], ['jØ[email protected]'], ['#@%^%#$@#$@#.com'], ['@example.com'], ['Joe Smith <[email protected]>'], ['email.example.com'], ['email@[email protected]'], ['[email protected] (Joe Smith)'], ['email@example'], ['“email”@example.com'], ]; } /** */ public function testCreateCustomerIfPassedAttributeDosNotExistsInCustomerInput() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Field "test123" is not defined by type "CustomerInput".'); $newFirstname = 'Richard'; $newLastname = 'Rowe'; $currentPassword = 'test123#'; $newEmail = '[email protected]'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$newFirstname}" lastname: "{$newLastname}" test123: "123test123" email: "{$newEmail}" password: "{$currentPassword}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $this->graphQlMutation($query); } /** */ public function testCreateCustomerIfNameEmpty() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Required parameters are missing: First Name'); $newEmail = 'customer_created' . rand(1, 2000000) . '@example.com'; $newFirstname = ''; $newLastname = 'Rowe'; $currentPassword = 'test123#'; $query = <<<QUERY mutation { createCustomer( input: { email: "{$newEmail}" firstname: "{$newFirstname}" lastname: "{$newLastname}" password: "{$currentPassword}" is_subscribed: true } ) { customer { id firstname lastname email is_subscribed } } } QUERY; $this->graphQlMutation($query); } /** * @magentoConfigFixture default_store newsletter/general/active 0 */ public function testCreateCustomerSubscribed() { $newFirstname = 'Richard'; $newLastname = 'Rowe'; $newEmail = '[email protected]'; $query = <<<QUERY mutation { createCustomer( input: { firstname: "{$newFirstname}" lastname: "{$newLastname}" email: "{$newEmail}" is_subscribed: true } ) { customer { email is_subscribed } } } QUERY; $response = $this->graphQlMutation($query); $this->assertFalse($response['createCustomer']['customer']['is_subscribed']); } /** * @magentoApiDataFixture Magento/Customer/_files/customer.php */ public function testCreateCustomerIfCustomerWithProvidedEmailAlreadyExists() { $this->expectException(\Exception::class); $this->expectExceptionMessage( 'A customer with the same email address already exists in an associated website.' ); $existedEmail = '[email protected]'; $password = 'test123#'; $firstname = 'John'; $lastname = 'Smith'; $query = <<<QUERY mutation { createCustomer( input: { email: "{$existedEmail}" password: "{$password}" firstname: "{$firstname}" lastname: "{$lastname}" } ) { customer { firstname lastname email } } } QUERY; $this->graphQlMutation($query); } protected function tearDown(): void { $newEmail = '[email protected]'; try { $customer = $this->customerRepository->get($newEmail); } catch (\Exception $exception) { return; } $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', true); $this->customerRepository->delete($customer); $this->registry->unregister('isSecureArea'); $this->registry->register('isSecureArea', false); parent::tearDown(); } }