3
namespace GuzzleHttp\Tests\Subscriber;
5
use GuzzleHttp\Adapter\Transaction;
7
use GuzzleHttp\Cookie\CookieJar;
8
use GuzzleHttp\Event\CompleteEvent;
9
use GuzzleHttp\Message\Request;
10
use GuzzleHttp\Message\Response;
11
use GuzzleHttp\Subscriber\Cookie;
12
use GuzzleHttp\Subscriber\History;
13
use GuzzleHttp\Subscriber\Mock;
16
* @covers GuzzleHttp\Subscriber\Cookie
18
class CookieTest extends \PHPUnit_Framework_TestCase
20
public function testExtractsAndStoresCookies()
22
$request = new Request('GET', '/');
23
$response = new Response(200);
24
$mock = $this->getMockBuilder('GuzzleHttp\Cookie\CookieJar')
25
->setMethods(array('extractCookies'))
28
$mock->expects($this->exactly(1))
29
->method('extractCookies')
30
->with($request, $response);
32
$plugin = new Cookie($mock);
33
$t = new Transaction(new Client(), $request);
34
$t->setResponse($response);
35
$plugin->onComplete(new CompleteEvent($t));
38
public function testProvidesCookieJar()
40
$jar = new CookieJar();
41
$plugin = new Cookie($jar);
42
$this->assertSame($jar, $plugin->getCookieJar());
45
public function testCookiesAreExtractedFromRedirectResponses()
47
$jar = new CookieJar();
48
$cookie = new Cookie($jar);
49
$history = new History();
51
"HTTP/1.1 302 Moved Temporarily\r\n" .
52
"Set-Cookie: test=583551; Domain=www.foo.com; Expires=Wednesday, 23-Mar-2050 19:49:45 GMT; Path=/\r\n" .
53
"Location: /redirect\r\n\r\n",
54
"HTTP/1.1 200 OK\r\n" .
55
"Content-Length: 0\r\n\r\n",
56
"HTTP/1.1 200 OK\r\n" .
57
"Content-Length: 0\r\n\r\n"
59
$client = new Client(['base_url' => 'http://www.foo.com']);
60
$client->getEmitter()->attach($cookie);
61
$client->getEmitter()->attach($mock);
62
$client->getEmitter()->attach($history);
65
$request = $client->createRequest('GET', '/');
66
$client->send($request);
68
$this->assertEquals('test=583551', $request->getHeader('Cookie'));
69
$requests = $history->getRequests();
70
// Confirm subsequent requests have the cookie.
71
$this->assertEquals('test=583551', $requests[2]->getHeader('Cookie'));
72
// Confirm the redirected request has the cookie.
73
$this->assertEquals('test=583551', $requests[1]->getHeader('Cookie'));