123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- namespace Magento\Framework\Stdlib;
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- use Magento\TestFramework\Helper\Bootstrap;
- use Magento\TestFramework\TestCase\HttpClient\CurlClientWithCookies;
- /**
- * End to end test of the Cookie Manager, using curl.
- *
- * Uses controllers in TestModule1 to set and delete cookies and verify 'Set-Cookie' headers that come back.
- */
- class CookieManagerTest extends \Magento\TestFramework\TestCase\WebapiAbstract
- {
- private $cookieTesterUrl = 'testmoduleone/CookieTester';
- /** @var CurlClientWithCookies */
- protected $curlClient;
- public function setUp()
- {
- $objectManager = Bootstrap::getObjectManager();
- $this->config = $objectManager->get(\Magento\Webapi\Model\Config::class);
- $this->curlClient = $objectManager->get(
- \Magento\TestFramework\TestCase\HttpClient\CurlClientWithCookies::class
- );
- }
- /**
- * Set a sensitive Cookie and delete it.
- *
- */
- public function testSensitiveCookie()
- {
- $url = $this->cookieTesterUrl . '/SetSensitiveCookie';
- $cookieParams =
- [
- 'cookie_name' => 'test-sensitive-cookie',
- 'cookie_value' => 'test-sensitive-cookie-value',
- ];
- $response = $this->curlClient->get($url, $cookieParams);
- $cookie = $this->findCookie($cookieParams['cookie_name'], $response['cookies']);
- $this->assertNotNull($cookie);
- $this->assertEquals($cookieParams['cookie_name'], $cookie['name']);
- $this->assertEquals($cookieParams['cookie_value'], $cookie['value']);
- $this->assertFalse(isset($cookie['domain']));
- $this->assertFalse(isset($cookie['path']));
- $this->assertEquals('true', $cookie['httponly']);
- $this->assertFalse(isset($cookie['secure']));
- $this->assertFalse(isset($cookie['max-age']));
- }
- /**
- * Set a public cookie
- *
- */
- public function testPublicCookieNameValue()
- {
- $url = $this->cookieTesterUrl . '/SetPublicCookie';
- $cookieParams =
- [
- 'cookie_name' => 'test-cookie',
- 'cookie_value' => 'test-cookie-value',
- ];
- $response = $this->curlClient->get($url, $cookieParams);
- $cookie = $this->findCookie($cookieParams['cookie_name'], $response['cookies']);
- $this->assertNotNull($cookie);
- $this->assertEquals($cookieParams['cookie_name'], $cookie['name']);
- $this->assertEquals($cookieParams['cookie_value'], $cookie['value']);
- $this->assertFalse(isset($cookie['domain']));
- $this->assertFalse(isset($cookie['path']));
- $this->assertFalse(isset($cookie['httponly']));
- $this->assertFalse(isset($cookie['secure']));
- $this->assertFalse(isset($cookie['max-age']));
- }
- /**
- * Set a public cookie
- *
- */
- public function testPublicCookieAll()
- {
- $url = $this->cookieTesterUrl . '/SetPublicCookie';
- $cookieParams =
- [
- 'cookie_name' => 'test-cookie',
- 'cookie_value' => 'test-cookie-value',
- 'cookie_domain' => 'www.example.com',
- 'cookie_path' => '/test/path',
- 'cookie_httponly' => 'true',
- 'cookie_secure' => 'true',
- 'cookie_duration' => '600',
- ];
- $response = $this->curlClient->get($url, $cookieParams);
- $cookie = $this->findCookie($cookieParams['cookie_name'], $response['cookies']);
- $this->assertNotNull($cookie);
- $this->assertEquals($cookieParams['cookie_name'], $cookie['name']);
- $this->assertEquals($cookieParams['cookie_value'], $cookie['value']);
- $this->assertEquals($cookieParams['cookie_domain'], $cookie['domain']);
- $this->assertEquals($cookieParams['cookie_path'], $cookie['path']);
- $this->assertEquals($cookieParams['cookie_httponly'], $cookie['httponly']);
- $this->assertEquals($cookieParams['cookie_secure'], $cookie['secure']);
- if (isset($cookie['max-age'])) {
- $this->assertEquals($cookieParams['cookie_duration'], $cookie['max-age']);
- }
- $this->assertTrue(isset($cookie['expires']));
- }
- /**
- * Delete a cookie
- *
- */
- public function testDeleteCookie()
- {
- $url = $this->cookieTesterUrl . '/DeleteCookie';
- $cookieParams =
- [
- 'cookie_name' => 'test-cookie',
- 'cookie_value' => 'test-cookie-value',
- ];
- $response = $this->curlClient->get(
- $url,
- $cookieParams,
- ['Cookie: test-cookie=test-cookie-value; anothertestcookie=anothertestcookievalue']
- );
- $cookie = $this->findCookie($cookieParams['cookie_name'], $response['cookies']);
- $this->assertNotNull($cookie);
- $this->assertEquals($cookieParams['cookie_name'], $cookie['name']);
- $this->assertEquals('deleted', $cookie['value']);
- $this->assertFalse(isset($cookie['domain']));
- $this->assertFalse(isset($cookie['path']));
- $this->assertFalse(isset($cookie['httponly']));
- $this->assertFalse(isset($cookie['secure']));
- if (isset($cookie['max-age'])) {
- $this->assertEquals(0, $cookie['max-age']);
- }
- $this->assertEquals('Thu, 01-Jan-1970 00:00:01 GMT', $cookie['expires']);
- }
- /**
- * Find cookie with given name in the list of cookies
- *
- * @param string $cookieName
- * @param array $cookies
- * @return $cookie|null
- * @SuppressWarnings(PHPMD.UnusedLocalVariable)
- */
- private function findCookie($cookieName, $cookies)
- {
- foreach ($cookies as $cookieIndex => $cookie) {
- if ($cookie['name'] === $cookieName) {
- return $cookie;
- }
- }
- return null;
- }
- }
|