1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135:
<?php
namespace Guzzle\Tests\Plugin\Cookie;
use Guzzle\Common\Event;
use Guzzle\Plugin\Cookie\Cookie;
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
use Guzzle\Http\Client;
use Guzzle\Http\Message\Response;
use Guzzle\Plugin\Cookie\CookiePlugin;
class CookiePluginTest extends \Guzzle\Tests\GuzzleTestCase
{
public function testExtractsAndStoresCookies()
{
$response = new Response(200);
$mock = $this->getMockBuilder('Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar')
->setMethods(array('addCookiesFromResponse'))
->getMock();
$mock->expects($this->exactly(1))
->method('addCookiesFromResponse')
->with($response);
$plugin = new CookiePlugin($mock);
$plugin->onRequestSent(new Event(array(
'response' => $response
)));
}
public function testAddsCookiesToRequests()
{
$cookie = new Cookie(array(
'name' => 'foo',
'value' => 'bar'
));
$mock = $this->getMockBuilder('Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar')
->setMethods(array('getMatchingCookies'))
->getMock();
$mock->expects($this->once())
->method('getMatchingCookies')
->will($this->returnValue(array($cookie)));
$plugin = new CookiePlugin($mock);
$client = new Client();
$client->getEventDispatcher()->addSubscriber($plugin);
$request = $client->get('http://www.example.com');
$plugin->onRequestBeforeSend(new Event(array(
'request' => $request
)));
$this->assertEquals('bar', $request->getCookie('foo'));
}
public function testCookiesAreExtractedFromRedirectResponses()
{
$plugin = new CookiePlugin(new ArrayCookieJar());
$this->getServer()->flush();
$this->getServer()->enqueue(array(
"HTTP/1.1 302 Moved Temporarily\r\n" .
"Set-Cookie: test=583551; expires=Wednesday, 23-Mar-2050 19:49:45 GMT; path=/\r\n" .
"Location: /redirect\r\n\r\n",
"HTTP/1.1 200 OK\r\n" .
"Content-Length: 0\r\n\r\n",
"HTTP/1.1 200 OK\r\n" .
"Content-Length: 0\r\n\r\n"
));
$client = new Client($this->getServer()->getUrl());
$client->getEventDispatcher()->addSubscriber($plugin);
$client->get()->send();
$request = $client->get();
$request->send();
$this->assertEquals('test=583551', $request->getHeader('Cookie'));
$requests = $this->getServer()->getReceivedRequests(true);
$this->assertEquals('test=583551', $requests[2]->getHeader('Cookie'));
$this->assertEquals('test=583551', $requests[1]->getHeader('Cookie'));
}
public function testCookiesAreNotAddedWhenParamIsSet()
{
$jar = new ArrayCookieJar();
$plugin = new CookiePlugin($jar);
$jar->add(new Cookie(array(
'domain' => 'example.com',
'path' => '/',
'name' => 'test',
'value' => 'hi',
'expires' => time() + 3600
)));
$client = new Client('http://example.com');
$client->getEventDispatcher()->addSubscriber($plugin);
$request = $client->get();
$request->setResponse(new Response(200), true);
$request->send();
$this->assertEquals('hi', $request->getCookie('test'));
$request = $client->get();
$request->getParams()->set('cookies.disable', true);
$request->setResponse(new Response(200), true);
$request->send();
$this->assertNull($request->getCookie('test'));
}
public function testProvidesCookieJar()
{
$jar = new ArrayCookieJar();
$plugin = new CookiePlugin($jar);
$this->assertSame($jar, $plugin->getCookieJar());
}
public function testEscapesCookieDomains()
{
$cookie = new Cookie(array('domain' => '/foo/^$[A-Z]+/'));
$this->assertFalse($cookie->matchesDomain('foo'));
}
}