1616
1717namespace Magento \GraphQl \PageCache ;
1818
19- use Magento \TestFramework \TestCase \GraphQlAbstract ;
20- use Magento \TestFramework \Fixture \Config ;
2119use Magento \Framework \App \PageCache \Version ;
20+ use Magento \TestFramework \Fixture \Config ;
21+ use Magento \TestFramework \TestCase \GraphQlAbstract ;
2222
2323/**
2424 * Test absence/presence of private_content_version cookie in GraphQl POST HTTP responses
2525 */
2626class DisableSessionTest extends GraphQlAbstract
2727{
28+ private const PHPSESSID_COOKIE_NAME = 'PHPSESSID ' ;
29+
2830 #[
2931 Config('graphql/session/disable ' , '1 ' )
3032 ]
@@ -33,10 +35,14 @@ public function testPrivateSessionContentCookieNotPresentWhenSessionDisabled()
3335 $ result = $ this ->graphQlMutationWithResponseHeaders ($ this ->getMutation ());
3436 $ this ->assertArrayHasKey ('headers ' , $ result );
3537 if (!empty ($ result ['headers ' ]['Set-Cookie ' ])) {
36- $ this ->assertStringNotContainsString (
37- Version::COOKIE_NAME ,
38- $ result ['headers ' ]['Set-Cookie ' ],
39- Version::COOKIE_NAME . ' should not be present in Set-Cookie header '
38+ $ this ->assertFalse (
39+ $ this ->isCookieSet ($ result ['headers ' ]['Set-Cookie ' ], self ::PHPSESSID_COOKIE_NAME ),
40+ self ::PHPSESSID_COOKIE_NAME . ' should not be present in HTTP response '
41+ );
42+
43+ $ this ->assertFalse (
44+ $ this ->isCookieSet ($ result ['headers ' ]['Set-Cookie ' ], Version::COOKIE_NAME ),
45+ Version::COOKIE_NAME . ' should not be present in HTTP response '
4046 );
4147 }
4248 }
@@ -49,11 +55,30 @@ public function testPrivateSessionContentCookiePresentWhenSessionEnabled()
4955 $ result = $ this ->graphQlMutationWithResponseHeaders ($ this ->getMutation ());
5056 $ this ->assertArrayHasKey ('headers ' , $ result );
5157 $ this ->assertArrayHasKey ('Set-Cookie ' , $ result ['headers ' ], 'Set-Cookie HTTP response header should be present ' );
52- $ this -> assertStringContainsString (
53- Version:: COOKIE_NAME ,
54- $ result ['headers ' ]['Set-Cookie ' ],
55- Version:: COOKIE_NAME . ' should be set by the server '
58+
59+ $ this -> assertTrue (
60+ $ this -> isCookieSet ( $ result ['headers ' ]['Set-Cookie ' ], self :: PHPSESSID_COOKIE_NAME ) ,
61+ self :: PHPSESSID_COOKIE_NAME . ' should be present in HTTP response '
5662 );
63+
64+ $ this ->assertTrue (
65+ $ this ->isCookieSet ($ result ['headers ' ]['Set-Cookie ' ], Version::COOKIE_NAME ),
66+ Version::COOKIE_NAME . ' should be present in HTTP response '
67+ );
68+ }
69+
70+ /**
71+ * Checks if $cookieName was set by server in any of Set-Cookie header(s)
72+ *
73+ * @param array $setCookieHeader
74+ * @param string $cookieName
75+ * @return bool
76+ */
77+ private function isCookieSet (array $ setCookieHeader , string $ cookieName ): bool
78+ {
79+ return count (array_filter ($ setCookieHeader , function ($ cookie ) use ($ cookieName ) {
80+ return str_starts_with ($ cookie , $ cookieName );
81+ })) > 0 ;
5782 }
5883
5984 /**
0 commit comments