CookieScopeTest.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Stdlib\Cookie;
  7. use Magento\Framework\App\RequestInterface;
  8. use Magento\Framework\ObjectManagerInterface;
  9. use Magento\TestFramework\Helper\Bootstrap;
  10. use Zend\Stdlib\Parameters;
  11. /**
  12. * Test CookieScope
  13. *
  14. */
  15. class CookieScopeTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var ObjectManagerInterface
  19. */
  20. protected $objectManager;
  21. /**
  22. * @var RequestInterface
  23. */
  24. protected $request;
  25. public function setUp()
  26. {
  27. $this->objectManager = Bootstrap::getObjectManager();
  28. $this->request = $this->objectManager->get(\Magento\Framework\App\RequestInterface::class);
  29. }
  30. public function testGetSensitiveCookieMetadataEmpty()
  31. {
  32. $serverVal = $_SERVER;
  33. $this->request->setServer(new Parameters(array_merge($_SERVER, ['HTTPS' => 'on'])));
  34. $cookieScope = $this->createCookieScope();
  35. $this->assertEquals(
  36. [
  37. SensitiveCookieMetadata::KEY_HTTP_ONLY => true,
  38. SensitiveCookieMetadata::KEY_SECURE => true,
  39. ],
  40. $cookieScope->getSensitiveCookieMetadata()->__toArray()
  41. );
  42. $this->request->setServer(new Parameters($serverVal));
  43. }
  44. public function testGetPublicCookieMetadataEmpty()
  45. {
  46. $cookieScope = $this->createCookieScope();
  47. $this->assertEmpty($cookieScope->getPublicCookieMetadata()->__toArray());
  48. }
  49. public function testGetSensitiveCookieMetadataDefaults()
  50. {
  51. $defaultValues = [
  52. SensitiveCookieMetadata::KEY_PATH => 'default path',
  53. SensitiveCookieMetadata::KEY_DOMAIN => 'default domain',
  54. ];
  55. $sensitive = $this->createSensitiveMetadata($defaultValues);
  56. $cookieScope = $this->createCookieScope(
  57. [
  58. 'sensitiveCookieMetadata' => $sensitive,
  59. 'publicCookieMetadata' => null,
  60. 'cookieMetadata' => null,
  61. ]
  62. );
  63. $this->assertEquals(
  64. [
  65. SensitiveCookieMetadata::KEY_PATH => 'default path',
  66. SensitiveCookieMetadata::KEY_DOMAIN => 'default domain',
  67. SensitiveCookieMetadata::KEY_HTTP_ONLY => true,
  68. SensitiveCookieMetadata::KEY_SECURE => false,
  69. ],
  70. $cookieScope->getSensitiveCookieMetadata()->__toArray()
  71. );
  72. }
  73. public function testGetPublicCookieMetadataDefaults()
  74. {
  75. $defaultValues = [
  76. PublicCookieMetadata::KEY_PATH => 'default path',
  77. PublicCookieMetadata::KEY_DOMAIN => 'default domain',
  78. PublicCookieMetadata::KEY_DURATION => 'default duration',
  79. PublicCookieMetadata::KEY_HTTP_ONLY => 'default http',
  80. PublicCookieMetadata::KEY_SECURE => 'default secure',
  81. ];
  82. $public = $this->createPublicMetadata($defaultValues);
  83. $cookieScope = $this->createCookieScope(
  84. [
  85. 'publicCookieMetadata' => $public,
  86. ]
  87. );
  88. $this->assertEquals($defaultValues, $cookieScope->getPublicCookieMetadata()->__toArray());
  89. }
  90. public function testGetCookieMetadataDefaults()
  91. {
  92. $defaultValues = [
  93. CookieMetadata::KEY_PATH => 'default path',
  94. CookieMetadata::KEY_DOMAIN => 'default domain',
  95. ];
  96. $cookieMetadata = $this->createCookieMetadata($defaultValues);
  97. $cookieScope = $this->createCookieScope(
  98. [
  99. 'deleteCookieMetadata' => $cookieMetadata,
  100. ]
  101. );
  102. $this->assertEquals($defaultValues, $cookieScope->getCookieMetadata()->__toArray());
  103. }
  104. public function testGetSensitiveCookieMetadataOverrides()
  105. {
  106. $defaultValues = [
  107. SensitiveCookieMetadata::KEY_PATH => 'default path',
  108. SensitiveCookieMetadata::KEY_DOMAIN => 'default domain',
  109. ];
  110. $overrideValues = [
  111. SensitiveCookieMetadata::KEY_PATH => 'override path',
  112. SensitiveCookieMetadata::KEY_DOMAIN => 'override domain',
  113. ];
  114. $sensitive = $this->createSensitiveMetadata($defaultValues);
  115. $cookieScope = $this->createCookieScope(
  116. [
  117. 'sensitiveCookieMetadata' => $sensitive,
  118. ]
  119. );
  120. $override = $this->createSensitiveMetadata($overrideValues);
  121. $this->assertEquals(
  122. [
  123. SensitiveCookieMetadata::KEY_PATH => 'override path',
  124. SensitiveCookieMetadata::KEY_DOMAIN => 'override domain',
  125. SensitiveCookieMetadata::KEY_HTTP_ONLY => true,
  126. SensitiveCookieMetadata::KEY_SECURE => false,
  127. ],
  128. $cookieScope->getSensitiveCookieMetadata($override)->__toArray()
  129. );
  130. }
  131. public function testGetPublicCookieMetadataOverrides()
  132. {
  133. $defaultValues = [
  134. PublicCookieMetadata::KEY_PATH => 'default path',
  135. PublicCookieMetadata::KEY_DOMAIN => 'default domain',
  136. PublicCookieMetadata::KEY_DURATION => 'default duration',
  137. PublicCookieMetadata::KEY_HTTP_ONLY => 'default http',
  138. PublicCookieMetadata::KEY_SECURE => 'default secure',
  139. ];
  140. $overrideValues = [
  141. PublicCookieMetadata::KEY_PATH => 'override path',
  142. PublicCookieMetadata::KEY_DOMAIN => 'override domain',
  143. PublicCookieMetadata::KEY_DURATION => 'override duration',
  144. PublicCookieMetadata::KEY_HTTP_ONLY => 'override http',
  145. PublicCookieMetadata::KEY_SECURE => 'override secure',
  146. ];
  147. $public = $this->createPublicMetadata($defaultValues);
  148. $cookieScope = $this->createCookieScope(
  149. [
  150. 'publicCookieMetadata' => $public,
  151. ]
  152. );
  153. $override = $this->createPublicMetadata($overrideValues);
  154. $this->assertEquals($overrideValues, $cookieScope->getPublicCookieMetadata($override)->__toArray());
  155. }
  156. public function testGetCookieMetadataOverrides()
  157. {
  158. $defaultValues = [
  159. CookieMetadata::KEY_PATH => 'default path',
  160. CookieMetadata::KEY_DOMAIN => 'default domain',
  161. ];
  162. $overrideValues = [
  163. CookieMetadata::KEY_PATH => 'override path',
  164. CookieMetadata::KEY_DOMAIN => 'override domain',
  165. ];
  166. $deleteCookieMetadata = $this->createCookieMetadata($defaultValues);
  167. $cookieScope = $this->createCookieScope(
  168. [
  169. 'deleteCookieMetadata' => $deleteCookieMetadata,
  170. ]
  171. );
  172. $override = $this->createCookieMetadata($overrideValues);
  173. $this->assertEquals($overrideValues, $cookieScope->getCookieMetadata($override)->__toArray());
  174. }
  175. /**
  176. * Creates a CookieScope object with the given parameters.
  177. *
  178. * @param array $params
  179. * @return CookieScope
  180. */
  181. protected function createCookieScope($params = [])
  182. {
  183. return $this->objectManager->create(\Magento\Framework\Stdlib\Cookie\CookieScope::class, $params);
  184. }
  185. /**
  186. * Creates a SensitiveCookieMetadata object with provided metadata values.
  187. *
  188. * @param array $metadata
  189. * @return SensitiveCookieMetadata
  190. */
  191. protected function createSensitiveMetadata($metadata = [])
  192. {
  193. return $this->objectManager->create(
  194. \Magento\Framework\Stdlib\Cookie\SensitiveCookieMetadata::class,
  195. ['metadata' => $metadata]
  196. );
  197. }
  198. /**
  199. * Creates a PublicCookieMetadata object with provided metadata values.
  200. *
  201. * @param array $metadata
  202. * @return PublicCookieMetadata
  203. */
  204. protected function createPublicMetadata($metadata = [])
  205. {
  206. return $this->objectManager->create(
  207. \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class,
  208. ['metadata' => $metadata]
  209. );
  210. }
  211. /**
  212. * Creates a CookieMetadata object with provided metadata values.
  213. *
  214. * @param array $metadata
  215. * @return CookieMetadata
  216. */
  217. protected function createCookieMetadata($metadata = [])
  218. {
  219. return $this->objectManager->create(
  220. \Magento\Framework\Stdlib\Cookie\CookieMetadata::class,
  221. ['metadata' => $metadata]
  222. );
  223. }
  224. }