Skip to content

Commit 698ff1c

Browse files
committed
AC-14095: Fix web api test
1 parent 6cc5614 commit 698ff1c

File tree

1 file changed

+56
-37
lines changed

1 file changed

+56
-37
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2021 Adobe
4+
* All Rights Reserved.
55
*/
66
declare(strict_types=1);
77

88
namespace Magento\GraphQl\GraphQlCache\CacheIdFactorProviders\Customer;
99

10+
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
1011
use Magento\Customer\Api\CustomerRepositoryInterface;
1112
use Magento\Customer\Model\Group;
13+
use Magento\Customer\Test\Fixture\Customer as CustomerFixture;
1214
use Magento\Framework\Exception\AuthenticationException;
15+
use Magento\Framework\Exception\EmailNotConfirmedException;
1316
use Magento\GraphQlCache\Model\CacheId\CacheIdCalculator;
1417
use Magento\Integration\Api\CustomerTokenServiceInterface;
18+
use Magento\TestFramework\Fixture\DataFixture;
19+
use Magento\TestFramework\Fixture\DataFixtureStorage;
20+
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
1521
use Magento\TestFramework\Helper\Bootstrap;
1622
use Magento\TestFramework\TestCase\GraphQlAbstract;
1723

@@ -35,57 +41,70 @@ class CustomerGroupProviderTest extends GraphQlAbstract
3541
*/
3642
private $customerRepository;
3743

44+
/**
45+
* @var DataFixtureStorage
46+
*/
47+
private $fixtures;
48+
3849
protected function setUp(): void
3950
{
40-
$objectManager = Bootstrap::getObjectManager();
41-
$this->customerTokenService = $objectManager->get(CustomerTokenServiceInterface::class);
42-
$this->customerGroup = $objectManager->get(Group::class);
43-
$this->customerRepository = $objectManager->get(CustomerRepositoryInterface::class);
51+
$this->customerTokenService = Bootstrap::getObjectManager()->get(CustomerTokenServiceInterface::class);
52+
$this->customerGroup = Bootstrap::getObjectManager()->get(Group::class);
53+
$this->customerRepository = Bootstrap::getObjectManager()->get(CustomerRepositoryInterface::class);
54+
$this->fixtures = Bootstrap::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage();
4455
}
4556

4657
/**
4758
* Tests that cache id header changes based on customer group and remains consistent for same customer group
48-
*
49-
* @magentoApiDataFixture Magento/Customer/_files/customer.php
50-
* @magentoApiDataFixture Magento/GraphQl/Catalog/_files/simple_product.php
5159
*/
52-
public function testCacheIdHeaderWithCustomerGroup()
60+
#[
61+
DataFixture(ProductFixture::class, as: 'product'),
62+
DataFixture(CustomerFixture::class, as: 'customer'),
63+
]
64+
public function testCacheIdHeaderWithCustomerGroup(): void
5365
{
54-
$sku = 'simple_product';
66+
$customerEmail = $this->fixtures->get('customer')->getEmail();
5567
$query = <<<QUERY
56-
{
57-
products(filter: {sku: {eq: "{$sku}"}})
58-
{
59-
items {
60-
id
61-
name
62-
sku
63-
description {
64-
html
68+
{
69+
products(filter: {sku: {eq: "{$this->fixtures->get('product')->getSku()}"}})
70+
{
71+
items {
72+
id
73+
name
74+
sku
75+
description {
76+
html
77+
}
6578
}
6679
}
6780
}
68-
}
69-
QUERY;
70-
$response = $this->graphQlQueryWithResponseHeaders($query, [], '', $this->getHeaderMap());
81+
QUERY;
82+
$response = $this->graphQlQueryWithResponseHeaders(
83+
$query,
84+
[],
85+
'',
86+
$this->getHeaderMap($customerEmail)
87+
);
7188
$this->assertArrayHasKey(CacheIdCalculator::CACHE_ID_HEADER, $response['headers']);
7289
$cacheId = $response['headers'][CacheIdCalculator::CACHE_ID_HEADER];
7390
$this->assertTrue((boolean)preg_match('/^[0-9a-f]{64}$/i', $cacheId));
74-
$groupCode = 'Retailer';
75-
$customer = $this->customerRepository->get('[email protected]');
76-
$customerGroupId = $this->customerGroup->load($groupCode, 'customer_group_code')->getId();
91+
$customer = $this->customerRepository->get($customerEmail);
92+
$customerGroupId = $this->customerGroup->load('Retailer', 'customer_group_code')->getId();
7793
// change the customer group of this customer from the default group
7894
$customer->setGroupId($customerGroupId);
7995
$this->customerRepository->save($customer);
8096
$responseAfterCustomerGroupChange = $this->graphQlQueryWithResponseHeaders(
8197
$query,
8298
[],
8399
'',
84-
$this->getHeaderMap()
100+
$this->getHeaderMap($customerEmail)
101+
);
102+
$this->assertArrayHasKey(
103+
CacheIdCalculator::CACHE_ID_HEADER,
104+
$responseAfterCustomerGroupChange['headers']
85105
);
86-
$this->assertArrayHasKey(CacheIdCalculator::CACHE_ID_HEADER, $responseAfterCustomerGroupChange['headers']);
87106
$cacheIdCustomerGroupChange = $responseAfterCustomerGroupChange['headers'][CacheIdCalculator::CACHE_ID_HEADER];
88-
// Verify that the the cache id generated is a 64 character long
107+
// Verify that the cache id generated is a 64 character long
89108
$this->assertTrue((boolean)preg_match('/^[0-9a-f]{64}$/i', $cacheId));
90109
// check that the cache ids generated before and after customer group changes are not equal
91110
$this->assertNotEquals($cacheId, $cacheIdCustomerGroupChange);
@@ -96,28 +115,28 @@ public function testCacheIdHeaderWithCustomerGroup()
96115
$query,
97116
[],
98117
'',
99-
$this->getHeaderMap()
118+
$this->getHeaderMap($customerEmail)
100119
);
101-
$cacheIdDefaultCustomerGroup = $responseDefaultCustomerGroup['headers'][CacheIdCalculator::CACHE_ID_HEADER];
102120
//Verify that the cache id is same as original $cacheId
103-
$this->assertEquals($cacheIdDefaultCustomerGroup, $cacheId);
121+
$this->assertEquals(
122+
$responseDefaultCustomerGroup['headers'][CacheIdCalculator::CACHE_ID_HEADER],
123+
$cacheId
124+
);
104125
}
105126

106127
/**
107128
* Authentication header map
108129
*
109130
* @param string $username
110-
* @param string $password
111-
*
112131
* @return array
113132
*
114133
* @throws AuthenticationException
134+
* @throws EmailNotConfirmedException
115135
*/
116-
private function getHeaderMap(string $username = '[email protected]', string $password = 'password'): array
136+
private function getHeaderMap(string $username): array
117137
{
118-
$customerToken = $this->customerTokenService->createCustomerAccessToken($username, $password);
138+
$customerToken = $this->customerTokenService->createCustomerAccessToken($username, 'password');
119139

120140
return ['Authorization' => 'Bearer ' . $customerToken];
121141
}
122-
123142
}

0 commit comments

Comments
 (0)