updated plugin W3 Total Cache
version 2.3.3
This commit is contained in:
449
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/CookieJarTest.php
vendored
Normal file
449
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/CookieJarTest.php
vendored
Normal file
@ -0,0 +1,449 @@
|
||||
<?php
|
||||
namespace GuzzleHttp\Tests\CookieJar;
|
||||
|
||||
use DateInterval;
|
||||
use DateTime;
|
||||
use DateTimeImmutable;
|
||||
use GuzzleHttp\Cookie\CookieJar;
|
||||
use GuzzleHttp\Cookie\SetCookie;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers GuzzleHttp\Cookie\CookieJar
|
||||
*/
|
||||
class CookieJarTest extends TestCase
|
||||
{
|
||||
/** @var CookieJar */
|
||||
private $jar;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->jar = new CookieJar();
|
||||
}
|
||||
|
||||
protected function getTestCookies()
|
||||
{
|
||||
return [
|
||||
new SetCookie(['Name' => 'foo', 'Value' => 'bar', 'Domain' => 'foo.com', 'Path' => '/', 'Discard' => true]),
|
||||
new SetCookie(['Name' => 'test', 'Value' => '123', 'Domain' => 'baz.com', 'Path' => '/foo', 'Expires' => 2]),
|
||||
new SetCookie(['Name' => 'you', 'Value' => '123', 'Domain' => 'bar.com', 'Path' => '/boo', 'Expires' => time() + 1000])
|
||||
];
|
||||
}
|
||||
|
||||
public function testCreatesFromArray()
|
||||
{
|
||||
$jar = CookieJar::fromArray([
|
||||
'foo' => 'bar',
|
||||
'baz' => 'bam'
|
||||
], 'example.com');
|
||||
self::assertCount(2, $jar);
|
||||
}
|
||||
|
||||
public function testEmptyJarIsCountable()
|
||||
{
|
||||
self::assertCount(0, new CookieJar());
|
||||
}
|
||||
|
||||
public function testGetsCookiesByName()
|
||||
{
|
||||
$cookies = $this->getTestCookies();
|
||||
foreach ($this->getTestCookies() as $cookie) {
|
||||
$this->jar->setCookie($cookie);
|
||||
}
|
||||
|
||||
$testCookie = $cookies[0];
|
||||
self::assertEquals($testCookie, $this->jar->getCookieByName($testCookie->getName()));
|
||||
self::assertNull($this->jar->getCookieByName("doesnotexist"));
|
||||
self::assertNull($this->jar->getCookieByName(""));
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides test data for cookie cookieJar retrieval
|
||||
*/
|
||||
public function getCookiesDataProvider()
|
||||
{
|
||||
return [
|
||||
[['foo', 'baz', 'test', 'muppet', 'googoo'], '', '', '', false],
|
||||
[['foo', 'baz', 'muppet', 'googoo'], '', '', '', true],
|
||||
[['googoo'], 'www.example.com', '', '', false],
|
||||
[['muppet', 'googoo'], 'test.y.example.com', '', '', false],
|
||||
[['foo', 'baz'], 'example.com', '', '', false],
|
||||
[['muppet'], 'x.y.example.com', '/acme/', '', false],
|
||||
[['muppet'], 'x.y.example.com', '/acme/test/', '', false],
|
||||
[['googoo'], 'x.y.example.com', '/test/acme/test/', '', false],
|
||||
[['foo', 'baz'], 'example.com', '', '', false],
|
||||
[['baz'], 'example.com', '', 'baz', false],
|
||||
];
|
||||
}
|
||||
|
||||
public function testStoresAndRetrievesCookies()
|
||||
{
|
||||
$cookies = $this->getTestCookies();
|
||||
foreach ($cookies as $cookie) {
|
||||
self::assertTrue($this->jar->setCookie($cookie));
|
||||
}
|
||||
|
||||
self::assertCount(3, $this->jar);
|
||||
self::assertCount(3, $this->jar->getIterator());
|
||||
self::assertEquals($cookies, $this->jar->getIterator()->getArrayCopy());
|
||||
}
|
||||
|
||||
public function testRemovesTemporaryCookies()
|
||||
{
|
||||
$cookies = $this->getTestCookies();
|
||||
foreach ($this->getTestCookies() as $cookie) {
|
||||
$this->jar->setCookie($cookie);
|
||||
}
|
||||
$this->jar->clearSessionCookies();
|
||||
self::assertEquals(
|
||||
[$cookies[1], $cookies[2]],
|
||||
$this->jar->getIterator()->getArrayCopy()
|
||||
);
|
||||
}
|
||||
|
||||
public function testRemovesSelectively()
|
||||
{
|
||||
foreach ($this->getTestCookies() as $cookie) {
|
||||
$this->jar->setCookie($cookie);
|
||||
}
|
||||
|
||||
// Remove foo.com cookies
|
||||
$this->jar->clear('foo.com');
|
||||
self::assertCount(2, $this->jar);
|
||||
// Try again, removing no further cookies
|
||||
$this->jar->clear('foo.com');
|
||||
self::assertCount(2, $this->jar);
|
||||
|
||||
// Remove bar.com cookies with path of /boo
|
||||
$this->jar->clear('bar.com', '/boo');
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
// Remove cookie by name
|
||||
$this->jar->clear(null, null, 'test');
|
||||
self::assertCount(0, $this->jar);
|
||||
}
|
||||
|
||||
public function testDoesNotAddIncompleteCookies()
|
||||
{
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie()));
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo'
|
||||
])));
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie([
|
||||
'Name' => false
|
||||
])));
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie([
|
||||
'Name' => true
|
||||
])));
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Domain' => 'foo.com'
|
||||
])));
|
||||
}
|
||||
|
||||
public function testDoesNotAddEmptyCookies()
|
||||
{
|
||||
self::assertFalse($this->jar->setCookie(new SetCookie([
|
||||
'Name' => '',
|
||||
'Domain' => 'foo.com',
|
||||
'Value' => 0
|
||||
])));
|
||||
}
|
||||
|
||||
public function testDoesAddValidCookies()
|
||||
{
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie([
|
||||
'Name' => '0',
|
||||
'Domain' => 'foo.com',
|
||||
'Value' => 0
|
||||
])));
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Domain' => 'foo.com',
|
||||
'Value' => 0
|
||||
])));
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Domain' => 'foo.com',
|
||||
'Value' => 0.0
|
||||
])));
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Domain' => 'foo.com',
|
||||
'Value' => '0'
|
||||
])));
|
||||
}
|
||||
|
||||
public function testOverwritesCookiesThatAreOlderOrDiscardable()
|
||||
{
|
||||
$t = time() + 1000;
|
||||
$data = [
|
||||
'Name' => 'foo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => '.example.com',
|
||||
'Path' => '/',
|
||||
'Max-Age' => '86400',
|
||||
'Secure' => true,
|
||||
'Discard' => true,
|
||||
'Expires' => $t
|
||||
];
|
||||
|
||||
// Make sure that the discard cookie is overridden with the non-discard
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
$data['Discard'] = false;
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
$c = $this->jar->getIterator()->getArrayCopy();
|
||||
self::assertFalse($c[0]->getDiscard());
|
||||
|
||||
// Make sure it doesn't duplicate the cookie
|
||||
$this->jar->setCookie(new SetCookie($data));
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
// Make sure the more future-ful expiration date supersede the other
|
||||
$data['Expires'] = time() + 2000;
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
self::assertCount(1, $this->jar);
|
||||
$c = $this->jar->getIterator()->getArrayCopy();
|
||||
self::assertNotEquals($t, $c[0]->getExpires());
|
||||
}
|
||||
|
||||
public function testOverwritesCookiesThatHaveChanged()
|
||||
{
|
||||
$t = time() + 1000;
|
||||
$data = [
|
||||
'Name' => 'foo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => '.example.com',
|
||||
'Path' => '/',
|
||||
'Max-Age' => '86400',
|
||||
'Secure' => true,
|
||||
'Discard' => true,
|
||||
'Expires' => $t
|
||||
];
|
||||
|
||||
// Make sure that the discard cookie is overridden with the non-discard
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
|
||||
$data['Value'] = 'boo';
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
// Changing the value plus a parameter also must overwrite the existing one
|
||||
$data['Value'] = 'zoo';
|
||||
$data['Secure'] = false;
|
||||
self::assertTrue($this->jar->setCookie(new SetCookie($data)));
|
||||
self::assertCount(1, $this->jar);
|
||||
|
||||
$c = $this->jar->getIterator()->getArrayCopy();
|
||||
self::assertSame('zoo', $c[0]->getValue());
|
||||
}
|
||||
|
||||
public function testAddsCookiesFromResponseWithRequest()
|
||||
{
|
||||
$response = new Response(200, [
|
||||
'Set-Cookie' => "fpc=d=.Hm.yh4.1XmJWjJfs4orLQzKzPImxklQoxXSHOZATHUSEFciRueW_7704iYUtsXNEXq0M92Px2glMdWypmJ7HIQl6XIUvrZimWjQ3vIdeuRbI.FNQMAfcxu_XN1zSx7l.AcPdKL6guHc2V7hIQFhnjRW0rxm2oHY1P4bGQxFNz7f.tHm12ZD3DbdMDiDy7TBXsuP4DM-&v=2; expires=Fri, 02-Mar-2019 02:17:40 GMT;"
|
||||
]);
|
||||
$request = new Request('GET', 'http://www.example.com');
|
||||
$this->jar->extractCookies($request, $response);
|
||||
self::assertCount(1, $this->jar);
|
||||
}
|
||||
|
||||
public function getMatchingCookiesDataProvider()
|
||||
{
|
||||
return [
|
||||
['https://example.com', 'foo=bar; baz=foobar'],
|
||||
['http://example.com', ''],
|
||||
['https://example.com:8912', 'foo=bar; baz=foobar'],
|
||||
['https://foo.example.com', 'foo=bar; baz=foobar'],
|
||||
['http://foo.example.com/test/acme/', 'googoo=gaga']
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getMatchingCookiesDataProvider
|
||||
*/
|
||||
public function testReturnsCookiesMatchingRequests($url, $cookies)
|
||||
{
|
||||
$bag = [
|
||||
new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'example.com',
|
||||
'Path' => '/',
|
||||
'Max-Age' => '86400',
|
||||
'Secure' => true
|
||||
]),
|
||||
new SetCookie([
|
||||
'Name' => 'baz',
|
||||
'Value' => 'foobar',
|
||||
'Domain' => 'example.com',
|
||||
'Path' => '/',
|
||||
'Max-Age' => '86400',
|
||||
'Secure' => true
|
||||
]),
|
||||
new SetCookie([
|
||||
'Name' => 'test',
|
||||
'Value' => '123',
|
||||
'Domain' => 'www.foobar.com',
|
||||
'Path' => '/path/',
|
||||
'Discard' => true
|
||||
]),
|
||||
new SetCookie([
|
||||
'Name' => 'muppet',
|
||||
'Value' => 'cookie_monster',
|
||||
'Domain' => '.y.example.com',
|
||||
'Path' => '/acme/',
|
||||
'Expires' => time() + 86400
|
||||
]),
|
||||
new SetCookie([
|
||||
'Name' => 'googoo',
|
||||
'Value' => 'gaga',
|
||||
'Domain' => '.example.com',
|
||||
'Path' => '/test/acme/',
|
||||
'Max-Age' => 1500
|
||||
])
|
||||
];
|
||||
|
||||
foreach ($bag as $cookie) {
|
||||
$this->jar->setCookie($cookie);
|
||||
}
|
||||
|
||||
$request = new Request('GET', $url);
|
||||
$request = $this->jar->withCookieHeader($request);
|
||||
self::assertSame($cookies, $request->getHeaderLine('Cookie'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
* @expectedExceptionMessage Invalid cookie: Cookie name must not contain invalid characters: ASCII Control characters (0-31;127), space, tab and the following characters: ()<>@,;:\"/?={}
|
||||
*/
|
||||
public function testThrowsExceptionWithStrictMode()
|
||||
{
|
||||
$a = new CookieJar(true);
|
||||
$a->setCookie(new SetCookie(['Name' => "abc\n", 'Value' => 'foo', 'Domain' => 'bar']));
|
||||
}
|
||||
|
||||
public function testDeletesCookiesByName()
|
||||
{
|
||||
$cookies = $this->getTestCookies();
|
||||
$cookies[] = new SetCookie([
|
||||
'Name' => 'other',
|
||||
'Value' => '123',
|
||||
'Domain' => 'bar.com',
|
||||
'Path' => '/boo',
|
||||
'Expires' => time() + 1000
|
||||
]);
|
||||
$jar = new CookieJar();
|
||||
foreach ($cookies as $cookie) {
|
||||
$jar->setCookie($cookie);
|
||||
}
|
||||
self::assertCount(4, $jar);
|
||||
$jar->clear('bar.com', '/boo', 'other');
|
||||
self::assertCount(3, $jar);
|
||||
$names = array_map(function (SetCookie $c) {
|
||||
return $c->getName();
|
||||
}, $jar->getIterator()->getArrayCopy());
|
||||
self::assertSame(['foo', 'test', 'you'], $names);
|
||||
}
|
||||
|
||||
public function testCanConvertToAndLoadFromArray()
|
||||
{
|
||||
$jar = new CookieJar(true);
|
||||
foreach ($this->getTestCookies() as $cookie) {
|
||||
$jar->setCookie($cookie);
|
||||
}
|
||||
self::assertCount(3, $jar);
|
||||
$arr = $jar->toArray();
|
||||
self::assertCount(3, $arr);
|
||||
$newCookieJar = new CookieJar(false, $arr);
|
||||
self::assertCount(3, $newCookieJar);
|
||||
self::assertSame($jar->toArray(), $newCookieJar->toArray());
|
||||
}
|
||||
|
||||
public function testAddsCookiesWithEmptyPathFromResponse()
|
||||
{
|
||||
$response = new Response(200, [
|
||||
'Set-Cookie' => "fpc=foobar; expires={$this->futureExpirationDate()}; path=;"
|
||||
]);
|
||||
$request = new Request('GET', 'http://www.example.com');
|
||||
$this->jar->extractCookies($request, $response);
|
||||
$newRequest = $this->jar->withCookieHeader(new Request('GET', 'http://www.example.com/foo'));
|
||||
self::assertTrue($newRequest->hasHeader('Cookie'));
|
||||
}
|
||||
|
||||
public function getCookiePathsDataProvider()
|
||||
{
|
||||
return [
|
||||
['', '/'],
|
||||
['/', '/'],
|
||||
['/foo', '/'],
|
||||
['/foo/bar', '/foo'],
|
||||
['/foo/bar/', '/foo/bar'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getCookiePathsDataProvider
|
||||
*/
|
||||
public function testCookiePathWithEmptySetCookiePath($uriPath, $cookiePath)
|
||||
{
|
||||
$response = (new Response(200))
|
||||
->withAddedHeader(
|
||||
'Set-Cookie',
|
||||
"foo=bar; expires={$this->futureExpirationDate()}; domain=www.example.com; path=;"
|
||||
)
|
||||
->withAddedHeader(
|
||||
'Set-Cookie',
|
||||
"bar=foo; expires={$this->futureExpirationDate()}; domain=www.example.com; path=foobar;"
|
||||
)
|
||||
;
|
||||
$request = (new Request('GET', "https://www.example.com{$uriPath}"));
|
||||
$this->jar->extractCookies($request, $response);
|
||||
|
||||
self::assertSame($cookiePath, $this->jar->toArray()[0]['Path']);
|
||||
self::assertSame($cookiePath, $this->jar->toArray()[1]['Path']);
|
||||
}
|
||||
|
||||
public function getDomainMatchesProvider()
|
||||
{
|
||||
return [
|
||||
['www.example.com', 'www.example.com', true],
|
||||
['www.example.com', 'www.EXAMPLE.com', true],
|
||||
['www.example.com', 'www.example.net', false],
|
||||
['www.example.com', 'ftp.example.com', false],
|
||||
['www.example.com', 'example.com', true],
|
||||
['www.example.com', 'EXAMPLE.com', true],
|
||||
['fra.de.example.com', 'EXAMPLE.com', true],
|
||||
['www.EXAMPLE.com', 'www.example.com', true],
|
||||
['www.EXAMPLE.com', 'www.example.COM', true],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getDomainMatchesProvider
|
||||
*/
|
||||
public function testIgnoresCookiesForMismatchingDomains($requestHost, $domainAttribute, $matches)
|
||||
{
|
||||
$response = (new Response(200))
|
||||
->withAddedHeader(
|
||||
'Set-Cookie',
|
||||
"foo=bar; expires={$this->futureExpirationDate()}; domain={$domainAttribute}; path=/;"
|
||||
)
|
||||
;
|
||||
$request = (new Request('GET', "https://{$requestHost}/"));
|
||||
$this->jar->extractCookies($request, $response);
|
||||
|
||||
self::assertCount($matches ? 1 : 0, $this->jar->toArray());
|
||||
}
|
||||
|
||||
private function futureExpirationDate()
|
||||
{
|
||||
return (new DateTimeImmutable)->add(new DateInterval('P1D'))->format(DateTime::COOKIE);
|
||||
}
|
||||
}
|
88
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/FileCookieJarTest.php
vendored
Normal file
88
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/FileCookieJarTest.php
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
namespace GuzzleHttp\Tests\CookieJar;
|
||||
|
||||
use GuzzleHttp\Cookie\FileCookieJar;
|
||||
use GuzzleHttp\Cookie\SetCookie;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers GuzzleHttp\Cookie\FileCookieJar
|
||||
*/
|
||||
class FileCookieJarTest extends TestCase
|
||||
{
|
||||
private $file;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->file = tempnam('/tmp', 'file-cookies');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testValidatesCookieFile()
|
||||
{
|
||||
file_put_contents($this->file, 'true');
|
||||
new FileCookieJar($this->file);
|
||||
}
|
||||
|
||||
public function testLoadsFromFile()
|
||||
{
|
||||
$jar = new FileCookieJar($this->file);
|
||||
self::assertSame([], $jar->getIterator()->getArrayCopy());
|
||||
unlink($this->file);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerPersistsToFileFileParameters
|
||||
*/
|
||||
public function testPersistsToFile($testSaveSessionCookie = false)
|
||||
{
|
||||
$jar = new FileCookieJar($this->file, $testSaveSessionCookie);
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
'Expires' => time() + 1000
|
||||
]));
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'baz',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
'Expires' => time() + 1000
|
||||
]));
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'boo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
]));
|
||||
|
||||
self::assertCount(3, $jar);
|
||||
unset($jar);
|
||||
|
||||
// Make sure it wrote to the file
|
||||
$contents = file_get_contents($this->file);
|
||||
self::assertNotEmpty($contents);
|
||||
|
||||
// Load the cookieJar from the file
|
||||
$jar = new FileCookieJar($this->file);
|
||||
|
||||
if ($testSaveSessionCookie) {
|
||||
self::assertCount(3, $jar);
|
||||
} else {
|
||||
// Weeds out temporary and session cookies
|
||||
self::assertCount(2, $jar);
|
||||
}
|
||||
|
||||
unset($jar);
|
||||
unlink($this->file);
|
||||
}
|
||||
|
||||
public function providerPersistsToFileFileParameters()
|
||||
{
|
||||
return [
|
||||
[false],
|
||||
[true]
|
||||
];
|
||||
}
|
||||
}
|
92
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/SessionCookieJarTest.php
vendored
Normal file
92
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/SessionCookieJarTest.php
vendored
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
namespace GuzzleHttp\Tests\CookieJar;
|
||||
|
||||
use GuzzleHttp\Cookie\SessionCookieJar;
|
||||
use GuzzleHttp\Cookie\SetCookie;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers GuzzleHttp\Cookie\SessionCookieJar
|
||||
*/
|
||||
class SessionCookieJarTest extends TestCase
|
||||
{
|
||||
private $sessionVar;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->sessionVar = 'sessionKey';
|
||||
|
||||
if (!isset($_SESSION)) {
|
||||
$_SESSION = [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testValidatesCookieSession()
|
||||
{
|
||||
$_SESSION[$this->sessionVar] = 'true';
|
||||
new SessionCookieJar($this->sessionVar);
|
||||
}
|
||||
|
||||
public function testLoadsFromSession()
|
||||
{
|
||||
$jar = new SessionCookieJar($this->sessionVar);
|
||||
self::assertSame([], $jar->getIterator()->getArrayCopy());
|
||||
unset($_SESSION[$this->sessionVar]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerPersistsToSessionParameters
|
||||
*/
|
||||
public function testPersistsToSession($testSaveSessionCookie = false)
|
||||
{
|
||||
$jar = new SessionCookieJar($this->sessionVar, $testSaveSessionCookie);
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'foo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
'Expires' => time() + 1000
|
||||
]));
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'baz',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
'Expires' => time() + 1000
|
||||
]));
|
||||
$jar->setCookie(new SetCookie([
|
||||
'Name' => 'boo',
|
||||
'Value' => 'bar',
|
||||
'Domain' => 'foo.com',
|
||||
]));
|
||||
|
||||
self::assertCount(3, $jar);
|
||||
unset($jar);
|
||||
|
||||
// Make sure it wrote to the sessionVar in $_SESSION
|
||||
$contents = $_SESSION[$this->sessionVar];
|
||||
self::assertNotEmpty($contents);
|
||||
|
||||
// Load the cookieJar from the file
|
||||
$jar = new SessionCookieJar($this->sessionVar);
|
||||
|
||||
if ($testSaveSessionCookie) {
|
||||
self::assertCount(3, $jar);
|
||||
} else {
|
||||
// Weeds out temporary and session cookies
|
||||
self::assertCount(2, $jar);
|
||||
}
|
||||
|
||||
unset($jar);
|
||||
unset($_SESSION[$this->sessionVar]);
|
||||
}
|
||||
|
||||
public function providerPersistsToSessionParameters()
|
||||
{
|
||||
return [
|
||||
[false],
|
||||
[true]
|
||||
];
|
||||
}
|
||||
}
|
445
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/SetCookieTest.php
vendored
Normal file
445
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/guzzle/tests/Cookie/SetCookieTest.php
vendored
Normal file
@ -0,0 +1,445 @@
|
||||
<?php
|
||||
namespace GuzzleHttp\Tests\CookieJar;
|
||||
|
||||
use GuzzleHttp\Cookie\SetCookie;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers GuzzleHttp\Cookie\SetCookie
|
||||
*/
|
||||
class SetCookieTest extends TestCase
|
||||
{
|
||||
public function testInitializesDefaultValues()
|
||||
{
|
||||
$cookie = new SetCookie();
|
||||
self::assertSame('/', $cookie->getPath());
|
||||
}
|
||||
|
||||
public function testConvertsDateTimeMaxAgeToUnixTimestamp()
|
||||
{
|
||||
$cookie = new SetCookie(['Expires' => 'November 20, 1984']);
|
||||
self::assertInternalType('integer', $cookie->getExpires());
|
||||
}
|
||||
|
||||
public function testAddsExpiresBasedOnMaxAge()
|
||||
{
|
||||
$t = time();
|
||||
$cookie = new SetCookie(['Max-Age' => 100]);
|
||||
self::assertEquals($t + 100, $cookie->getExpires());
|
||||
}
|
||||
|
||||
public function testHoldsValues()
|
||||
{
|
||||
$t = time();
|
||||
$data = [
|
||||
'Name' => 'foo',
|
||||
'Value' => 'baz',
|
||||
'Path' => '/bar',
|
||||
'Domain' => 'baz.com',
|
||||
'Expires' => $t,
|
||||
'Max-Age' => 100,
|
||||
'Secure' => true,
|
||||
'Discard' => true,
|
||||
'HttpOnly' => true,
|
||||
'foo' => 'baz',
|
||||
'bar' => 'bam'
|
||||
];
|
||||
|
||||
$cookie = new SetCookie($data);
|
||||
self::assertEquals($data, $cookie->toArray());
|
||||
|
||||
self::assertSame('foo', $cookie->getName());
|
||||
self::assertSame('baz', $cookie->getValue());
|
||||
self::assertSame('baz.com', $cookie->getDomain());
|
||||
self::assertSame('/bar', $cookie->getPath());
|
||||
self::assertSame($t, $cookie->getExpires());
|
||||
self::assertSame(100, $cookie->getMaxAge());
|
||||
self::assertTrue($cookie->getSecure());
|
||||
self::assertTrue($cookie->getDiscard());
|
||||
self::assertTrue($cookie->getHttpOnly());
|
||||
self::assertSame('baz', $cookie->toArray()['foo']);
|
||||
self::assertSame('bam', $cookie->toArray()['bar']);
|
||||
|
||||
$cookie->setName('a');
|
||||
$cookie->setValue('b');
|
||||
$cookie->setPath('c');
|
||||
$cookie->setDomain('bar.com');
|
||||
$cookie->setExpires(10);
|
||||
$cookie->setMaxAge(200);
|
||||
$cookie->setSecure(false);
|
||||
$cookie->setHttpOnly(false);
|
||||
$cookie->setDiscard(false);
|
||||
|
||||
self::assertSame('a', $cookie->getName());
|
||||
self::assertSame('b', $cookie->getValue());
|
||||
self::assertSame('c', $cookie->getPath());
|
||||
self::assertSame('bar.com', $cookie->getDomain());
|
||||
self::assertSame(10, $cookie->getExpires());
|
||||
self::assertSame(200, $cookie->getMaxAge());
|
||||
self::assertFalse($cookie->getSecure());
|
||||
self::assertFalse($cookie->getDiscard());
|
||||
self::assertFalse($cookie->getHttpOnly());
|
||||
}
|
||||
|
||||
public function testDeterminesIfExpired()
|
||||
{
|
||||
$c = new SetCookie();
|
||||
$c->setExpires(10);
|
||||
self::assertTrue($c->isExpired());
|
||||
$c->setExpires(time() + 10000);
|
||||
self::assertFalse($c->isExpired());
|
||||
}
|
||||
|
||||
public function testMatchesDomain()
|
||||
{
|
||||
$cookie = new SetCookie();
|
||||
self::assertTrue($cookie->matchesDomain('baz.com'));
|
||||
|
||||
$cookie->setDomain('baz.com');
|
||||
self::assertTrue($cookie->matchesDomain('baz.com'));
|
||||
self::assertFalse($cookie->matchesDomain('bar.com'));
|
||||
|
||||
$cookie->setDomain('.baz.com');
|
||||
self::assertTrue($cookie->matchesDomain('.baz.com'));
|
||||
self::assertTrue($cookie->matchesDomain('foo.baz.com'));
|
||||
self::assertFalse($cookie->matchesDomain('baz.bar.com'));
|
||||
self::assertTrue($cookie->matchesDomain('baz.com'));
|
||||
|
||||
$cookie->setDomain('.127.0.0.1');
|
||||
self::assertTrue($cookie->matchesDomain('127.0.0.1'));
|
||||
|
||||
$cookie->setDomain('127.0.0.1');
|
||||
self::assertTrue($cookie->matchesDomain('127.0.0.1'));
|
||||
|
||||
$cookie->setDomain('.com.');
|
||||
self::assertFalse($cookie->matchesDomain('baz.com'));
|
||||
|
||||
$cookie->setDomain('.local');
|
||||
self::assertTrue($cookie->matchesDomain('example.local'));
|
||||
|
||||
$cookie->setDomain('example.com/'); // malformed domain
|
||||
self::assertFalse($cookie->matchesDomain('example.com'));
|
||||
}
|
||||
|
||||
public function pathMatchProvider()
|
||||
{
|
||||
return [
|
||||
['/foo', '/foo', true],
|
||||
['/foo', '/Foo', false],
|
||||
['/foo', '/fo', false],
|
||||
['/foo', '/foo/bar', true],
|
||||
['/foo', '/foo/bar/baz', true],
|
||||
['/foo', '/foo/bar//baz', true],
|
||||
['/foo', '/foobar', false],
|
||||
['/foo/bar', '/foo', false],
|
||||
['/foo/bar', '/foobar', false],
|
||||
['/foo/bar', '/foo/bar', true],
|
||||
['/foo/bar', '/foo/bar/', true],
|
||||
['/foo/bar', '/foo/bar/baz', true],
|
||||
['/foo/bar/', '/foo/bar', false],
|
||||
['/foo/bar/', '/foo/bar/', true],
|
||||
['/foo/bar/', '/foo/bar/baz', true],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider pathMatchProvider
|
||||
*/
|
||||
public function testMatchesPath($cookiePath, $requestPath, $isMatch)
|
||||
{
|
||||
$cookie = new SetCookie();
|
||||
$cookie->setPath($cookiePath);
|
||||
self::assertSame($isMatch, $cookie->matchesPath($requestPath));
|
||||
}
|
||||
|
||||
public function cookieValidateProvider()
|
||||
{
|
||||
return [
|
||||
['foo', 'baz', 'bar', true],
|
||||
['0', '0', '0', true],
|
||||
['foo[bar]', 'baz', 'bar', true],
|
||||
['', 'baz', 'bar', 'The cookie name must not be empty'],
|
||||
['foo', '', 'bar', 'The cookie value must not be empty'],
|
||||
['foo', 'baz', '', 'The cookie domain must not be empty'],
|
||||
["foo\r", 'baz', '0', 'Cookie name must not contain invalid characters: ASCII Control characters (0-31;127), space, tab and the following characters: ()<>@,;:\"/?={}'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider cookieValidateProvider
|
||||
*/
|
||||
public function testValidatesCookies($name, $value, $domain, $result)
|
||||
{
|
||||
$cookie = new SetCookie([
|
||||
'Name' => $name,
|
||||
'Value' => $value,
|
||||
'Domain' => $domain,
|
||||
]);
|
||||
self::assertSame($result, $cookie->validate());
|
||||
}
|
||||
|
||||
public function testDoesNotMatchIp()
|
||||
{
|
||||
$cookie = new SetCookie(['Domain' => '192.168.16.']);
|
||||
self::assertFalse($cookie->matchesDomain('192.168.16.121'));
|
||||
}
|
||||
|
||||
public function testConvertsToString()
|
||||
{
|
||||
$t = 1382916008;
|
||||
$cookie = new SetCookie([
|
||||
'Name' => 'test',
|
||||
'Value' => '123',
|
||||
'Domain' => 'foo.com',
|
||||
'Expires' => $t,
|
||||
'Path' => '/abc',
|
||||
'HttpOnly' => true,
|
||||
'Secure' => true
|
||||
]);
|
||||
self::assertSame(
|
||||
'test=123; Domain=foo.com; Path=/abc; Expires=Sun, 27 Oct 2013 23:20:08 GMT; Secure; HttpOnly',
|
||||
(string) $cookie
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides the parsed information from a cookie
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function cookieParserDataProvider()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'ASIHTTPRequestTestCookie=This+is+the+value; expires=Sat, 26-Jul-2008 17:00:42 GMT; path=/tests; domain=allseeing-i.com; PHPSESSID=6c951590e7a9359bcedde25cda73e43c; path=/;',
|
||||
[
|
||||
'Domain' => 'allseeing-i.com',
|
||||
'Path' => '/',
|
||||
'PHPSESSID' => '6c951590e7a9359bcedde25cda73e43c',
|
||||
'Max-Age' => null,
|
||||
'Expires' => 'Sat, 26-Jul-2008 17:00:42 GMT',
|
||||
'Secure' => null,
|
||||
'Discard' => null,
|
||||
'Name' => 'ASIHTTPRequestTestCookie',
|
||||
'Value' => 'This+is+the+value',
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
['', []],
|
||||
['foo', []],
|
||||
['; foo', []],
|
||||
[
|
||||
'foo="bar"',
|
||||
[
|
||||
'Name' => 'foo',
|
||||
'Value' => '"bar"',
|
||||
'Discard' => null,
|
||||
'Domain' => null,
|
||||
'Expires' => null,
|
||||
'Max-Age' => null,
|
||||
'Path' => '/',
|
||||
'Secure' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
// Test setting a blank value for a cookie
|
||||
[[
|
||||
'foo=', 'foo =', 'foo =;', 'foo= ;', 'foo =', 'foo= '],
|
||||
[
|
||||
'Name' => 'foo',
|
||||
'Value' => '',
|
||||
'Discard' => null,
|
||||
'Domain' => null,
|
||||
'Expires' => null,
|
||||
'Max-Age' => null,
|
||||
'Path' => '/',
|
||||
'Secure' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
// Test setting a value and removing quotes
|
||||
[[
|
||||
'foo=1', 'foo =1', 'foo =1;', 'foo=1 ;', 'foo =1', 'foo= 1', 'foo = 1 ;'],
|
||||
[
|
||||
'Name' => 'foo',
|
||||
'Value' => '1',
|
||||
'Discard' => null,
|
||||
'Domain' => null,
|
||||
'Expires' => null,
|
||||
'Max-Age' => null,
|
||||
'Path' => '/',
|
||||
'Secure' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
// Some of the following tests are based on http://framework.zend.com/svn/framework/standard/trunk/tests/Zend/Http/CookieTest.php
|
||||
[
|
||||
'justacookie=foo; domain=example.com',
|
||||
[
|
||||
'Name' => 'justacookie',
|
||||
'Value' => 'foo',
|
||||
'Domain' => 'example.com',
|
||||
'Discard' => null,
|
||||
'Expires' => null,
|
||||
'Max-Age' => null,
|
||||
'Path' => '/',
|
||||
'Secure' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
[
|
||||
'expires=tomorrow; secure; path=/Space Out/; expires=Tue, 21-Nov-2006 08:33:44 GMT; domain=.example.com',
|
||||
[
|
||||
'Name' => 'expires',
|
||||
'Value' => 'tomorrow',
|
||||
'Domain' => '.example.com',
|
||||
'Path' => '/Space Out/',
|
||||
'Expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
|
||||
'Discard' => null,
|
||||
'Secure' => true,
|
||||
'Max-Age' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
[
|
||||
'domain=unittests; expires=Tue, 21-Nov-2006 08:33:44 GMT; domain=example.com; path=/some value/',
|
||||
[
|
||||
'Name' => 'domain',
|
||||
'Value' => 'unittests',
|
||||
'Domain' => 'example.com',
|
||||
'Path' => '/some value/',
|
||||
'Expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
|
||||
'Secure' => false,
|
||||
'Discard' => null,
|
||||
'Max-Age' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
[
|
||||
'path=indexAction; path=/; domain=.foo.com; expires=Tue, 21-Nov-2006 08:33:44 GMT',
|
||||
[
|
||||
'Name' => 'path',
|
||||
'Value' => 'indexAction',
|
||||
'Domain' => '.foo.com',
|
||||
'Path' => '/',
|
||||
'Expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
|
||||
'Secure' => false,
|
||||
'Discard' => null,
|
||||
'Max-Age' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
[
|
||||
'secure=sha1; secure; SECURE; domain=some.really.deep.domain.com; version=1; Max-Age=86400',
|
||||
[
|
||||
'Name' => 'secure',
|
||||
'Value' => 'sha1',
|
||||
'Domain' => 'some.really.deep.domain.com',
|
||||
'Path' => '/',
|
||||
'Secure' => true,
|
||||
'Discard' => null,
|
||||
'Expires' => time() + 86400,
|
||||
'Max-Age' => 86400,
|
||||
'HttpOnly' => false,
|
||||
'version' => '1'
|
||||
]
|
||||
],
|
||||
[
|
||||
'PHPSESSID=123456789+abcd%2Cef; secure; discard; domain=.localdomain; path=/foo/baz; expires=Tue, 21-Nov-2006 08:33:44 GMT;',
|
||||
[
|
||||
'Name' => 'PHPSESSID',
|
||||
'Value' => '123456789+abcd%2Cef',
|
||||
'Domain' => '.localdomain',
|
||||
'Path' => '/foo/baz',
|
||||
'Expires' => 'Tue, 21-Nov-2006 08:33:44 GMT',
|
||||
'Secure' => true,
|
||||
'Discard' => true,
|
||||
'Max-Age' => null,
|
||||
'HttpOnly' => false
|
||||
]
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider cookieParserDataProvider
|
||||
*/
|
||||
public function testParseCookie($cookie, $parsed)
|
||||
{
|
||||
foreach ((array) $cookie as $v) {
|
||||
$c = SetCookie::fromString($v);
|
||||
$p = $c->toArray();
|
||||
|
||||
if (isset($p['Expires'])) {
|
||||
// Remove expires values from the assertion if they are relatively equal
|
||||
if (abs($p['Expires'] != strtotime($parsed['Expires'])) < 40) {
|
||||
unset($p['Expires']);
|
||||
unset($parsed['Expires']);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($parsed)) {
|
||||
foreach ($parsed as $key => $value) {
|
||||
self::assertEquals($parsed[$key], $p[$key], 'Comparing ' . $key . ' ' . var_export($value, true) . ' : ' . var_export($parsed, true) . ' | ' . var_export($p, true));
|
||||
}
|
||||
foreach ($p as $key => $value) {
|
||||
self::assertEquals($p[$key], $parsed[$key], 'Comparing ' . $key . ' ' . var_export($value, true) . ' : ' . var_export($parsed, true) . ' | ' . var_export($p, true));
|
||||
}
|
||||
} else {
|
||||
self::assertSame([
|
||||
'Name' => null,
|
||||
'Value' => null,
|
||||
'Domain' => null,
|
||||
'Path' => '/',
|
||||
'Max-Age' => null,
|
||||
'Expires' => null,
|
||||
'Secure' => false,
|
||||
'Discard' => false,
|
||||
'HttpOnly' => false,
|
||||
], $p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides the data for testing isExpired
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function isExpiredProvider()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'FOO=bar; expires=Thu, 01 Jan 1970 00:00:00 GMT;',
|
||||
true,
|
||||
],
|
||||
[
|
||||
'FOO=bar; expires=Thu, 01 Jan 1970 00:00:01 GMT;',
|
||||
true,
|
||||
],
|
||||
[
|
||||
'FOO=bar; expires=' . date(\DateTime::RFC1123, time()+10) . ';',
|
||||
false,
|
||||
],
|
||||
[
|
||||
'FOO=bar; expires=' . date(\DateTime::RFC1123, time()-10) . ';',
|
||||
true,
|
||||
],
|
||||
[
|
||||
'FOO=bar;',
|
||||
false,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider isExpiredProvider
|
||||
*/
|
||||
public function testIsExpired($cookie, $expired)
|
||||
{
|
||||
self::assertSame(
|
||||
$expired,
|
||||
SetCookie::fromString($cookie)->isExpired()
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user