144 lines
3.6 KiB
PHP
Executable File
144 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\GraphQl\Customer;
|
|
|
|
use Magento\Customer\Model\AccountManagement;
|
|
use Magento\Framework\App\Config\ScopeConfigInterface;
|
|
use Magento\Store\Api\StoreResolverInterface;
|
|
use Magento\Store\Model\ScopeInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\TestCase\GraphQlAbstract;
|
|
|
|
/**
|
|
* Test email availability functionality
|
|
*/
|
|
class IsEmailAvailableTest extends GraphQlAbstract
|
|
{
|
|
/**
|
|
* @var ScopeConfigInterface|null
|
|
*/
|
|
private ?ScopeConfigInterface $scopeConfig;
|
|
|
|
/**
|
|
* @var string|null
|
|
*/
|
|
private ?string $storeId;
|
|
|
|
public function setUp(): void
|
|
{
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
$this->scopeConfig = $objectManager->get(ScopeConfigInterface::class);
|
|
/* @var StoreResolverInterface $storeResolver */
|
|
$storeResolver = $objectManager->get(StoreResolverInterface::class);
|
|
$this->storeId = $storeResolver->getCurrentStoreId();
|
|
}
|
|
|
|
/**
|
|
* @magentoApiDataFixture Magento/Customer/_files/customer.php
|
|
*/
|
|
public function testEmailNotAvailable()
|
|
{
|
|
$query =
|
|
<<<QUERY
|
|
{
|
|
isEmailAvailable(email: "customer@example.com") {
|
|
is_email_available
|
|
}
|
|
}
|
|
QUERY;
|
|
$response = $this->graphQlQuery($query);
|
|
|
|
self::assertArrayHasKey('isEmailAvailable', $response);
|
|
self::assertArrayHasKey('is_email_available', $response['isEmailAvailable']);
|
|
$emailConfig = $this->scopeConfig->getValue(
|
|
AccountManagement::GUEST_CHECKOUT_LOGIN_OPTION_SYS_CONFIG,
|
|
ScopeInterface::SCOPE_STORE,
|
|
$this->storeId
|
|
);
|
|
if (!$emailConfig) {
|
|
self::assertTrue($response['isEmailAvailable']['is_email_available']);
|
|
} else {
|
|
self::assertFalse($response['isEmailAvailable']['is_email_available']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Verify email availability
|
|
*/
|
|
public function testEmailAvailable()
|
|
{
|
|
$query =
|
|
<<<QUERY
|
|
{
|
|
isEmailAvailable(email: "customer@example.com") {
|
|
is_email_available
|
|
}
|
|
}
|
|
QUERY;
|
|
$response = $this->graphQlQuery($query);
|
|
|
|
self::assertArrayHasKey('isEmailAvailable', $response);
|
|
self::assertArrayHasKey('is_email_available', $response['isEmailAvailable']);
|
|
self::assertTrue($response['isEmailAvailable']['is_email_available']);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testEmailAvailableEmptyValue()
|
|
{
|
|
$this->expectException(\Exception::class);
|
|
$this->expectExceptionMessage('GraphQL response contains errors: Email must be specified');
|
|
|
|
$query =
|
|
<<<QUERY
|
|
{
|
|
isEmailAvailable(email: "") {
|
|
is_email_available
|
|
}
|
|
}
|
|
QUERY;
|
|
$this->graphQlQuery($query);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testEmailAvailableMissingValue()
|
|
{
|
|
$this->expectException(\Exception::class);
|
|
$this->expectExceptionMessage('Field "isEmailAvailable" argument "email" of type "String!" is required');
|
|
|
|
$query =
|
|
<<<QUERY
|
|
{
|
|
isEmailAvailable {
|
|
is_email_available
|
|
}
|
|
}
|
|
QUERY;
|
|
$this->graphQlQuery($query);
|
|
}
|
|
|
|
/**
|
|
*/
|
|
public function testEmailAvailableInvalidValue()
|
|
{
|
|
$this->expectException(\Exception::class);
|
|
$this->expectExceptionMessage('GraphQL response contains errors: Email is invalid');
|
|
|
|
$query =
|
|
<<<QUERY
|
|
{
|
|
isEmailAvailable(email: "invalid-email") {
|
|
is_email_available
|
|
}
|
|
}
|
|
QUERY;
|
|
$this->graphQlQuery($query);
|
|
}
|
|
}
|