123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- // @codingStandardsIgnoreStart
- namespace {
- $mockTranslateSetCookie = false;
- }
- namespace Magento\Framework\Stdlib\Test\Unit\Cookie
- {
- use Magento\Framework\Stdlib\Cookie\PhpCookieManager;
- use Magento\Framework\Exception\InputException;
- use Magento\Framework\Stdlib\Cookie\FailureToSendException;
- use Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException;
- use Magento\Framework\Phrase;
- use Magento\Framework\HTTP\Header as HttpHeader;
- use Psr\Log\LoggerInterface;
- // @codingStandardsIgnoreEnd
- /**
- * Test PhpCookieManager
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class PhpCookieManagerTest extends \PHPUnit\Framework\TestCase
- {
- const COOKIE_NAME = 'cookie_name';
- const SENSITIVE_COOKIE_NAME_NO_METADATA_HTTPS = 'sensitive_cookie_name_no_metadata_https';
- const SENSITIVE_COOKIE_NAME_NO_METADATA_NOT_HTTPS = 'sensitive_cookie_name_no_metadata_not_https';
- const SENSITIVE_COOKIE_NAME_NO_DOMAIN_NO_PATH = 'sensitive_cookie_name_no_domain_no_path';
- const SENSITIVE_COOKIE_NAME_WITH_DOMAIN_AND_PATH = 'sensitive_cookie_name_with_domain_and_path';
- const PUBLIC_COOKIE_NAME_NO_METADATA = 'public_cookie_name_no_metadata';
- const PUBLIC_COOKIE_NAME_DEFAULT_VALUES = 'public_cookie_name_default_values';
- const PUBLIC_COOKIE_NAME_SOME_FIELDS_SET = 'public_cookie_name_some_fields_set';
- const MAX_COOKIE_SIZE_TEST_NAME = 'max_cookie_size_test_name';
- const MAX_NUM_COOKIE_TEST_NAME = 'max_num_cookie_test_name';
- const DELETE_COOKIE_NAME = 'delete_cookie_name';
- const DELETE_COOKIE_NAME_NO_METADATA = 'delete_cookie_name_no_metadata';
- const EXCEPTION_COOKIE_NAME = 'exception_cookie_name';
- const COOKIE_VALUE = 'cookie_value';
- const DEFAULT_VAL = 'default';
- const COOKIE_SECURE = true;
- const COOKIE_NOT_SECURE = false;
- const COOKIE_HTTP_ONLY = true;
- const COOKIE_NOT_HTTP_ONLY = false;
- const COOKIE_EXPIRE_END_OF_SESSION = 0;
- /**
- * Mapping from constant names to functions that handle the assertions.
- */
- protected static $functionTestAssertionMapping = [
- self::DELETE_COOKIE_NAME => 'self::assertDeleteCookie',
- self::DELETE_COOKIE_NAME_NO_METADATA => 'self::assertDeleteCookieWithNoMetadata',
- self::SENSITIVE_COOKIE_NAME_NO_METADATA_HTTPS => 'self::assertSensitiveCookieWithNoMetaDataHttps',
- self::SENSITIVE_COOKIE_NAME_NO_METADATA_NOT_HTTPS => 'self::assertSensitiveCookieWithNoMetaDataNotHttps',
- self::SENSITIVE_COOKIE_NAME_NO_DOMAIN_NO_PATH => 'self::assertSensitiveCookieNoDomainNoPath',
- self::SENSITIVE_COOKIE_NAME_WITH_DOMAIN_AND_PATH => 'self::assertSensitiveCookieWithDomainAndPath',
- self::PUBLIC_COOKIE_NAME_NO_METADATA => 'self::assertPublicCookieWithNoMetaData',
- self::PUBLIC_COOKIE_NAME_DEFAULT_VALUES => 'self::assertPublicCookieWithDefaultValues',
- self::PUBLIC_COOKIE_NAME_NO_METADATA => 'self::assertPublicCookieWithNoMetaData',
- self::PUBLIC_COOKIE_NAME_DEFAULT_VALUES => 'self::assertPublicCookieWithDefaultValues',
- self::PUBLIC_COOKIE_NAME_SOME_FIELDS_SET => 'self::assertPublicCookieWithSomeFieldSet',
- self::MAX_COOKIE_SIZE_TEST_NAME => 'self::assertCookieSize',
- ];
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- protected $objectManager;
- /**
- * Cookie Manager
- *
- * @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager
- */
- protected $cookieManager;
- /**
- * @var \PHPUnit_Framework_MockObject_MockObject|CookieScopeInterface
- */
- protected $scopeMock;
- /**
- * @var bool
- */
- public static $isSetCookieInvoked;
- /**
- * @var \Magento\Framework\App\Request\Http | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $requestMock;
- /**
- * @var \Magento\Framework\Stdlib\Cookie\CookieReaderInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $readerMock;
- /**
- * @var LoggerInterface | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $loggerMock;
- /**
- * @var HttpHeader | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $httpHeaderMock;
- /**
- * @var array
- */
- protected $cookieArray;
- protected function setUp()
- {
- require_once __DIR__ . '/_files/setcookie_mock.php';
- $this->cookieArray = $_COOKIE;
- global $mockTranslateSetCookie;
- $mockTranslateSetCookie = true;
- self::$isSetCookieInvoked = false;
- $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->scopeMock = $this->getMockBuilder(\Magento\Framework\Stdlib\Cookie\CookieScopeInterface::class)
- ->setMethods(['getPublicCookieMetadata', 'getCookieMetadata', 'getSensitiveCookieMetadata'])
- ->disableOriginalConstructor()
- ->getMock();
- $this->readerMock = $this->createMock(\Magento\Framework\Stdlib\Cookie\CookieReaderInterface::class);
- $this->loggerMock = $this->getMockBuilder(LoggerInterface::class)
- ->getMockForAbstractClass();
- $this->httpHeaderMock = $this->getMockBuilder(HttpHeader::class)
- ->disableOriginalConstructor()
- ->getMock();
- $this->cookieManager = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PhpCookieManager::class,
- [
- 'scope' => $this->scopeMock,
- 'reader' => $this->readerMock,
- 'logger' => $this->loggerMock,
- 'httpHeader' => $this->httpHeaderMock
- ]
- );
- $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
- ->disableOriginalConstructor()
- ->getMock();
- }
- public function tearDown()
- {
- global $mockTranslateSetCookie;
- $mockTranslateSetCookie = false;
- $_COOKIE = $this->cookieArray = $_COOKIE;
- }
- public function testGetUnknownCookie()
- {
- $unknownCookieName = 'unknownCookieName';
- $this->stubGetCookie($unknownCookieName, self::DEFAULT_VAL, self::DEFAULT_VAL);
- $this->assertEquals(
- self::DEFAULT_VAL,
- $this->cookieManager->getCookie($unknownCookieName, self::DEFAULT_VAL)
- );
- }
- public function testGetCookie()
- {
- $this->stubGetCookie(self::COOKIE_NAME, self::DEFAULT_VAL, self::COOKIE_VALUE);
- $this->assertEquals(
- self::COOKIE_VALUE,
- $this->cookieManager->getCookie(self::COOKIE_NAME, self::DEFAULT_VAL)
- );
- }
- public function testDeleteCookie()
- {
- self::$isSetCookieInvoked = false;
- /** @var \Magento\Framework\Stdlib\Cookie\CookieMetadata $cookieMetadata */
- $cookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\CookieMetadata::class,
- [
- 'metadata' => [
- 'domain' => 'magento.url',
- 'path' => '/backend',
- ]
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getCookieMetadata')
- ->with($cookieMetadata)
- ->will(
- $this->returnValue($cookieMetadata)
- );
- $this->cookieManager->deleteCookie(self::DELETE_COOKIE_NAME, $cookieMetadata);
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testDeleteCookieWithNoCookieMetadata()
- {
- self::$isSetCookieInvoked = false;
- $cookieMetadata = $this->objectManager->getObject(\Magento\Framework\Stdlib\Cookie\CookieMetadata::class);
- $this->scopeMock->expects($this->once())
- ->method('getCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($cookieMetadata)
- );
- $this->cookieManager->deleteCookie(self::DELETE_COOKIE_NAME_NO_METADATA);
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testDeleteCookieWithFailureToSendException()
- {
- self::$isSetCookieInvoked = false;
- $cookieMetadata = $this->objectManager->getObject(\Magento\Framework\Stdlib\Cookie\CookieMetadata::class);
- $this->scopeMock->expects($this->once())
- ->method('getCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($cookieMetadata)
- );
- try {
- $this->cookieManager->deleteCookie(self::EXCEPTION_COOKIE_NAME, $cookieMetadata);
- $this->fail('Expected exception not thrown.');
- } catch (FailureToSendException $fse) {
- $this->assertTrue(self::$isSetCookieInvoked);
- $this->assertSame(
- 'The cookie with "exception_cookie_name" cookieName couldn\'t be deleted.',
- $fse->getMessage()
- );
- }
- }
- /**
- * @param string $cookieName
- * @param bool $secure
- * @dataProvider isCurrentlySecureDataProvider
- */
- public function testSetSensitiveCookieNoMetadata($cookieName, $secure)
- {
- self::$isSetCookieInvoked = false;
- /** @var SensitiveCookieMetadata $sensitiveCookieMetadata */
- $sensitiveCookieMetadata = $this->objectManager
- ->getObject(
- \Magento\Framework\Stdlib\Cookie\SensitiveCookieMetadata::class,
- [
- 'request' => $this->requestMock
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getSensitiveCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($sensitiveCookieMetadata)
- );
- $this->requestMock->expects($this->once())
- ->method('isSecure')
- ->will($this->returnValue($secure));
- $this->cookieManager->setSensitiveCookie(
- $cookieName,
- 'cookie_value'
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- /**
- * @return array
- */
- public function isCurrentlySecureDataProvider()
- {
- return [
- [self::SENSITIVE_COOKIE_NAME_NO_METADATA_HTTPS, true],
- [self::SENSITIVE_COOKIE_NAME_NO_METADATA_NOT_HTTPS, false]
- ];
- }
- public function testSetSensitiveCookieNullDomainAndPath()
- {
- self::$isSetCookieInvoked = false;
- /** @var SensitiveCookieMetadata $sensitiveCookieMetadata */
- $sensitiveCookieMetadata = $this->objectManager
- ->getObject(
- \Magento\Framework\Stdlib\Cookie\SensitiveCookieMetadata::class,
- [
- 'request' => $this->requestMock,
- 'metadata' => [
- 'domain' => null,
- 'path' => null,
- ],
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getSensitiveCookieMetadata')
- ->with($sensitiveCookieMetadata)
- ->will(
- $this->returnValue($sensitiveCookieMetadata)
- );
- $this->requestMock->expects($this->once())
- ->method('isSecure')
- ->will($this->returnValue(true));
- $this->cookieManager->setSensitiveCookie(
- self::SENSITIVE_COOKIE_NAME_NO_DOMAIN_NO_PATH,
- 'cookie_value',
- $sensitiveCookieMetadata
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testSetSensitiveCookieWithPathAndDomain()
- {
- self::$isSetCookieInvoked = false;
- /** @var SensitiveCookieMetadata $sensitiveCookieMetadata */
- $sensitiveCookieMetadata = $this->objectManager
- ->getObject(
- \Magento\Framework\Stdlib\Cookie\SensitiveCookieMetadata::class,
- [
- 'request' => $this->requestMock,
- 'metadata' => [
- 'domain' => 'magento.url',
- 'path' => '/backend',
- ],
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getSensitiveCookieMetadata')
- ->with($sensitiveCookieMetadata)
- ->will(
- $this->returnValue($sensitiveCookieMetadata)
- );
- $this->requestMock->expects($this->once())
- ->method('isSecure')
- ->will($this->returnValue(false));
- $this->cookieManager->setSensitiveCookie(
- self::SENSITIVE_COOKIE_NAME_WITH_DOMAIN_AND_PATH,
- 'cookie_value',
- $sensitiveCookieMetadata
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testSetPublicCookieNoMetadata()
- {
- self::$isSetCookieInvoked = false;
- /** @var PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class
- );
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- $this->cookieManager->setPublicCookie(
- self::PUBLIC_COOKIE_NAME_NO_METADATA,
- 'cookie_value'
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testSetPublicCookieDefaultValues()
- {
- /** @var PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class,
- [
- 'metadata' => [
- 'domain' => null,
- 'path' => null,
- 'secure' => false,
- 'http_only' => false,
- ],
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with($publicCookieMetadata)
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- $this->cookieManager->setPublicCookie(
- self::PUBLIC_COOKIE_NAME_DEFAULT_VALUES,
- 'cookie_value',
- $publicCookieMetadata
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testSetPublicCookieSomeFieldsSet()
- {
- self::$isSetCookieInvoked = false;
- /** @var PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class,
- [
- 'metadata' => [
- 'domain' => 'magento.url',
- 'path' => '/backend',
- 'http_only' => true,
- ],
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with($publicCookieMetadata)
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- $this->cookieManager->setPublicCookie(
- self::PUBLIC_COOKIE_NAME_SOME_FIELDS_SET,
- 'cookie_value',
- $publicCookieMetadata
- );
- $this->assertTrue(self::$isSetCookieInvoked);
- }
- public function testSetCookieBadName()
- {
- /** @var \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class,
- [
- 'metadata' => [
- 'domain' => null,
- 'path' => null,
- 'secure' => false,
- 'http_only' => false,
- ],
- ]
- );
- $badCookieName = '';
- $cookieValue = 'some_value';
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- try {
- $this->cookieManager->setPublicCookie(
- $badCookieName,
- $cookieValue,
- $publicCookieMetadata
- );
- $this->fail('Failed to throw exception of bad cookie name');
- } catch (InputException $e) {
- $this->assertEquals(
- 'Cookie name cannot be empty and cannot contain these characters: =,; \\t\\r\\n\\013\\014',
- $e->getMessage()
- );
- }
- }
- public function testSetCookieSizeTooLarge()
- {
- /** @var PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class,
- [
- 'metadata' => [
- 'domain' => null,
- 'path' => null,
- 'secure' => false,
- 'http_only' => false,
- 'duration' => 3600,
- ],
- ]
- );
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- $cookieValue = '';
- $cookieManager = $this->cookieManager;
- for ($i = 0; $i < $cookieManager::MAX_COOKIE_SIZE + 1; $i++) {
- $cookieValue = $cookieValue . 'a';
- }
- try {
- $this->cookieManager->setPublicCookie(
- self::MAX_COOKIE_SIZE_TEST_NAME,
- $cookieValue,
- $publicCookieMetadata
- );
- $this->fail('Failed to throw exception of excess cookie size.');
- } catch (CookieSizeLimitReachedException $e) {
- $this->assertEquals(
- "Unable to send the cookie. Size of 'max_cookie_size_test_name' is 4123 bytes.",
- $e->getMessage()
- );
- }
- }
- public function testSetTooManyCookies()
- {
- /** @var PublicCookieMetadata $publicCookieMetadata */
- $publicCookieMetadata = $this->objectManager->getObject(
- \Magento\Framework\Stdlib\Cookie\PublicCookieMetadata::class
- );
- $userAgent = 'some_user_agent';
- $cookieManager = $this->cookieManager;
- // Set $cookieManager::MAX_NUM_COOKIES number of cookies in superglobal $_COOKIE.
- for ($i = count($_COOKIE); $i < $cookieManager::MAX_NUM_COOKIES; $i++) {
- $_COOKIE['test_cookie_' . $i] = self::COOKIE_VALUE . '_' . $i;
- }
- $this->scopeMock->expects($this->once())
- ->method('getPublicCookieMetadata')
- ->with()
- ->will(
- $this->returnValue($publicCookieMetadata)
- );
- $this->httpHeaderMock->expects($this->any())
- ->method('getHttpUserAgent')
- ->willReturn($userAgent);
- $this->loggerMock->expects($this->once())
- ->method('warning')
- ->with(
- new Phrase('Unable to send the cookie. Maximum number of cookies would be exceeded.'),
- array_merge($_COOKIE, ['user-agent' => $userAgent])
- );
- $this->cookieManager->setPublicCookie(
- self::MAX_COOKIE_SIZE_TEST_NAME,
- self::COOKIE_VALUE,
- $publicCookieMetadata
- );
- }
- /**
- * Assert public, sensitive and delete cookie
- *
- * Suppressing UnusedFormalParameter, since PHPMD doesn't detect the callback call.
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public static function assertCookie($name, $value, $expiry, $path, $domain, $secure, $httpOnly)
- {
- if (self::EXCEPTION_COOKIE_NAME == $name) {
- return false;
- } elseif (isset(self::$functionTestAssertionMapping[$name])) {
- call_user_func_array(self::$functionTestAssertionMapping[$name], func_get_args());
- } else {
- self::fail('Non-tested case in mock setcookie()');
- }
- return true;
- }
- /**
- * Assert delete cookie
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertDeleteCookie(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::DELETE_COOKIE_NAME, $name);
- self::assertEquals('', $value);
- self::assertEquals($expiry, PhpCookieManager::EXPIRE_NOW_TIME);
- self::assertFalse($secure);
- self::assertFalse($httpOnly);
- self::assertEquals('magento.url', $domain);
- self::assertEquals('/backend', $path);
- }
- /**
- * Assert delete cookie with no meta data
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertDeleteCookieWithNoMetadata(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::DELETE_COOKIE_NAME_NO_METADATA, $name);
- self::assertEquals('', $value);
- self::assertEquals($expiry, PhpCookieManager::EXPIRE_NOW_TIME);
- self::assertFalse($secure);
- self::assertFalse($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert sensitive cookie with no meta data
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertSensitiveCookieWithNoMetaDataHttps(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::SENSITIVE_COOKIE_NAME_NO_METADATA_HTTPS, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(PhpCookieManager::EXPIRE_AT_END_OF_SESSION_TIME, $expiry);
- self::assertTrue($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert sensitive cookie with no meta data
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertSensitiveCookieWithNoMetaDataNotHttps(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::SENSITIVE_COOKIE_NAME_NO_METADATA_NOT_HTTPS, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(PhpCookieManager::EXPIRE_AT_END_OF_SESSION_TIME, $expiry);
- self::assertFalse($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert sensitive cookie with no domain and path
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertSensitiveCookieNoDomainNoPath(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::SENSITIVE_COOKIE_NAME_NO_DOMAIN_NO_PATH, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(PhpCookieManager::EXPIRE_AT_END_OF_SESSION_TIME, $expiry);
- self::assertTrue($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert sensitive cookie with domain and path
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertSensitiveCookieWithDomainAndPath(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::SENSITIVE_COOKIE_NAME_WITH_DOMAIN_AND_PATH, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(PhpCookieManager::EXPIRE_AT_END_OF_SESSION_TIME, $expiry);
- self::assertFalse($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('magento.url', $domain);
- self::assertEquals('/backend', $path);
- }
- /**
- * Assert public cookie with no metadata
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertPublicCookieWithNoMetaData(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::PUBLIC_COOKIE_NAME_NO_METADATA, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(self::COOKIE_EXPIRE_END_OF_SESSION, $expiry);
- self::assertFalse($secure);
- self::assertFalse($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert public cookie with no domain and path
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertPublicCookieWithNoDomainNoPath(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::PUBLIC_COOKIE_NAME_NO_METADATA, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(PhpCookieManager::EXPIRE_AT_END_OF_SESSION_TIME, $expiry);
- self::assertTrue($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('magento.url', $domain);
- self::assertEquals('/backend', $path);
- }
- /**
- * Assert public cookie with default values
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertPublicCookieWithDefaultValues(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::PUBLIC_COOKIE_NAME_DEFAULT_VALUES, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(self::COOKIE_EXPIRE_END_OF_SESSION, $expiry);
- self::assertFalse($secure);
- self::assertFalse($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * Assert public cookie with no field set
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertPublicCookieWithSomeFieldSet(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::PUBLIC_COOKIE_NAME_SOME_FIELDS_SET, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(self::COOKIE_EXPIRE_END_OF_SESSION, $expiry);
- self::assertFalse($secure);
- self::assertTrue($httpOnly);
- self::assertEquals('magento.url', $domain);
- self::assertEquals('/backend', $path);
- }
- /**
- * Assert cookie size
- *
- * Suppressing UnusedPrivateMethod, since PHPMD doesn't detect callback method use.
- * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
- */
- private static function assertCookieSize(
- $name,
- $value,
- $expiry,
- $path,
- $domain,
- $secure,
- $httpOnly
- ) {
- self::assertEquals(self::MAX_COOKIE_SIZE_TEST_NAME, $name);
- self::assertEquals(self::COOKIE_VALUE, $value);
- self::assertEquals(self::COOKIE_EXPIRE_END_OF_SESSION, $expiry);
- self::assertFalse($secure);
- self::assertFalse($httpOnly);
- self::assertEquals('', $domain);
- self::assertEquals('', $path);
- }
- /**
- * @param $get
- * @param $default
- * @param $return
- */
- protected function stubGetCookie($get, $default, $return)
- {
- $this->readerMock->expects($this->atLeastOnce())
- ->method('getCookie')
- ->with($get, $default)
- ->willReturn($return);
- }
- }
- }
|