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 */
66declare (strict_types=1 );
77
88namespace Magento \GraphQl \GraphQlCache \CacheIdFactorProviders \Customer ;
99
10+ use Magento \Catalog \Test \Fixture \Product as ProductFixture ;
1011use Magento \Customer \Api \CustomerRepositoryInterface ;
1112use Magento \Customer \Model \Group ;
13+ use Magento \Customer \Test \Fixture \Customer as CustomerFixture ;
1214use Magento \Framework \Exception \AuthenticationException ;
15+ use Magento \Framework \Exception \EmailNotConfirmedException ;
1316use Magento \GraphQlCache \Model \CacheId \CacheIdCalculator ;
1417use Magento \Integration \Api \CustomerTokenServiceInterface ;
18+ use Magento \TestFramework \Fixture \DataFixture ;
19+ use Magento \TestFramework \Fixture \DataFixtureStorage ;
20+ use Magento \TestFramework \Fixture \DataFixtureStorageManager ;
1521use Magento \TestFramework \Helper \Bootstrap ;
1622use 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 ('customer@example.com ' );
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 = ' customer@example.com ' , 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