Setting up cookies for Guzzle CookieJar

DrDamnit picture DrDamnit · Feb 5, 2017 · Viewed 16.4k times · Source

I am doing unit testing in PHP for a site that requires authentication. Authentication is cookie based, so I need to be able to put a cookie like this in the cookie jar:

[ 'user_token' => '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' ] 

The web application can then use this known good token for the testing data, and will be able to authenticate under testing conditions to interact with the data fixtures.

Also, it must be a secure cookie, and I (obviously) need to set the domain.

Problem is: I don't know how to make and set this cookie and stick it in the jar. How do you do that?

Answer

DrDamnit picture DrDamnit · Feb 5, 2017

The source code provided the answer I needed.

The CookieJar class provides a method for building cookies from an associative array. Example:

$domain = 'example.org';
$values = ['users_token' => '2c26b46b68ffc68ff99b453c1d30113413422d706483bfa0f98a5e886266e7ae'];

$cookieJar = \GuzzleHttp\Cookie\CookieJar::fromArray($values, $domain);

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://example.org',
    'cookies'  => $cookieJar 
]);