11<?php
22/**
3- * Copyright 2024 Adobe
3+ * Copyright 2021 Adobe
44 * All Rights Reserved.
55 */
66declare (strict_types=1 );
1010use Magento \Catalog \Test \Fixture \Product as ProductFixture ;
1111use Magento \Customer \Api \CustomerRepositoryInterface ;
1212use Magento \Customer \Model \Group ;
13- use Magento \Customer \Test \Fixture \Customer ;
13+ use Magento \Customer \Test \Fixture \Customer as CustomerFixture ;
1414use Magento \Framework \Exception \AuthenticationException ;
15+ use Magento \Framework \Exception \EmailNotConfirmedException ;
1516use Magento \GraphQlCache \Model \CacheId \CacheIdCalculator ;
1617use Magento \Integration \Api \CustomerTokenServiceInterface ;
1718use Magento \TestFramework \Fixture \DataFixture ;
19+ use Magento \TestFramework \Fixture \DataFixtureStorage ;
1820use Magento \TestFramework \Fixture \DataFixtureStorageManager ;
1921use Magento \TestFramework \Helper \Bootstrap ;
2022use Magento \TestFramework \TestCase \GraphQlAbstract ;
@@ -39,60 +41,70 @@ class CustomerGroupProviderTest extends GraphQlAbstract
3941 */
4042 private $ customerRepository ;
4143
44+ /**
45+ * @var DataFixtureStorage
46+ */
47+ private $ fixtures ;
48+
4249 protected function setUp (): void
4350 {
44- $ objectManager = Bootstrap::getObjectManager ();
45- $ this ->customerTokenService = $ objectManager ->get (CustomerTokenServiceInterface ::class);
46- $ this ->customerGroup = $ objectManager ->get (Group ::class);
47- $ 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 ( );
4855 }
4956
5057 /**
5158 * Tests that cache id header changes based on customer group and remains consistent for same customer group
5259 */
5360 #[
54- DataFixture(Customer::class, as: 'customer ' ),
5561 DataFixture(ProductFixture::class, as: 'product ' ),
62+ DataFixture(CustomerFixture::class, as: 'customer ' ),
5663 ]
57- public function testCacheIdHeaderWithCustomerGroup ()
64+ public function testCacheIdHeaderWithCustomerGroup (): void
5865 {
59- $ customer = DataFixtureStorageManager::getStorage ()->get ('customer ' );
60- $ product = DataFixtureStorageManager::getStorage ()->get ('product ' );
61- $ sku = $ product ->getSku ();
66+ $ customerEmail = $ this ->fixtures ->get ('customer ' )->getEmail ();
6267 $ query = <<<QUERY
63- {
64- products(filter: {sku: {eq: " {$ sku }"}})
65- {
66- items {
67- id
68- name
69- sku
70- description {
71- 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+ }
7278 }
7379 }
7480 }
75- }
76- QUERY ;
77- $ response = $ this ->graphQlQueryWithResponseHeaders ($ query , [], '' , $ this ->getHeaderMap ($ customer ->getEmail ()));
81+ QUERY ;
82+ $ response = $ this ->graphQlQueryWithResponseHeaders (
83+ $ query ,
84+ [],
85+ '' ,
86+ $ this ->getHeaderMap ($ customerEmail )
87+ );
7888 $ this ->assertArrayHasKey (CacheIdCalculator::CACHE_ID_HEADER , $ response ['headers ' ]);
7989 $ cacheId = $ response ['headers ' ][CacheIdCalculator::CACHE_ID_HEADER ];
8090 $ this ->assertTrue ((boolean )preg_match ('/^[0-9a-f]{64}$/i ' , $ cacheId ));
81- $ groupCode = 'Retailer ' ;
82- $ customer = $ this ->customerRepository ->get ($ customer ->getEmail ());
83- $ 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 ();
8493 // change the customer group of this customer from the default group
8594 $ customer ->setGroupId ($ customerGroupId );
8695 $ this ->customerRepository ->save ($ customer );
8796 $ responseAfterCustomerGroupChange = $ this ->graphQlQueryWithResponseHeaders (
8897 $ query ,
8998 [],
9099 '' ,
91- $ this ->getHeaderMap ($ customer ->getEmail ())
100+ $ this ->getHeaderMap ($ customerEmail )
101+ );
102+ $ this ->assertArrayHasKey (
103+ CacheIdCalculator::CACHE_ID_HEADER ,
104+ $ responseAfterCustomerGroupChange ['headers ' ]
92105 );
93- $ this ->assertArrayHasKey (CacheIdCalculator::CACHE_ID_HEADER , $ responseAfterCustomerGroupChange ['headers ' ]);
94106 $ cacheIdCustomerGroupChange = $ responseAfterCustomerGroupChange ['headers ' ][CacheIdCalculator::CACHE_ID_HEADER ];
95- // Verify that the the cache id generated is a 64 character long
107+ // Verify that the cache id generated is a 64 character long
96108 $ this ->assertTrue ((boolean )preg_match ('/^[0-9a-f]{64}$/i ' , $ cacheId ));
97109 // check that the cache ids generated before and after customer group changes are not equal
98110 $ this ->assertNotEquals ($ cacheId , $ cacheIdCustomerGroupChange );
@@ -103,26 +115,27 @@ public function testCacheIdHeaderWithCustomerGroup()
103115 $ query ,
104116 [],
105117 '' ,
106- $ this ->getHeaderMap ($ customer -> getEmail () )
118+ $ this ->getHeaderMap ($ customerEmail )
107119 );
108- $ cacheIdDefaultCustomerGroup = $ responseDefaultCustomerGroup ['headers ' ][CacheIdCalculator::CACHE_ID_HEADER ];
109120 //Verify that the cache id is same as original $cacheId
110- $ this ->assertEquals ($ cacheIdDefaultCustomerGroup , $ cacheId );
121+ $ this ->assertEquals (
122+ $ responseDefaultCustomerGroup ['headers ' ][CacheIdCalculator::CACHE_ID_HEADER ],
123+ $ cacheId
124+ );
111125 }
112126
113127 /**
114128 * Authentication header map
115129 *
116130 * @param string $username
117- * @param string $password
118- *
119131 * @return array
120132 *
121133 * @throws AuthenticationException
134+ * @throws EmailNotConfirmedException
122135 */
123- private function getHeaderMap (string $ username = ' customer@example.com ' , string $ password = ' password ' ): array
136+ private function getHeaderMap (string $ username ): array
124137 {
125- $ customerToken = $ this ->customerTokenService ->createCustomerAccessToken ($ username , $ password );
138+ $ customerToken = $ this ->customerTokenService ->createCustomerAccessToken ($ username , ' password ' );
126139
127140 return ['Authorization ' => 'Bearer ' . $ customerToken ];
128141 }
0 commit comments