2017-02-05 5 views
2

Я выполняю модульное тестирование на PHP для сайта, для которого требуется аутентификация. Аутентификация печенье основе, так что мне нужно, чтобы иметь возможность положить печенье, как это в куков:Настройка файлов cookie для Guzzle CookieJar

[ 'user_token' => '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' ] 

Веб-приложение может затем использовать эту удачную фишку для данных тестирования, и будет иметь возможность проверить подлинность в условиях тестирования для взаимодействия с данными.

Кроме того, это должен быть безопасный файл cookie, и я (очевидно) должен установить домен.

Проблема заключается в следующем: я не знаю, как сделать и установить этот файл cookie и вставить его в банку. Как ты это делаешь?

+0

Вы думаете о хранении банки в файле и повторном использовании? –

+0

Может быть. Тот же токен аутентификации может использоваться для нескольких запросов по мере прогрессивного тестирования устройства, так что это будет нормально. – DrDamnit

+0

Немного грамматики и исправлений правописания. – Tom

ответ

4

The source code дал ответ мне было нужно.

Класс CookieJar предоставляет метод для создания файлов cookie из ассоциативного массива. Пример:

$jar = new \GuzzleHttp\Cookie\CookieJar; 

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

$cookieJar = $jar->fromArray($values,$domain); 

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

'fromArray' - статический метод, поэтому вы должны использовать его так:' \ GuzzleHttp \ Cookie \ CookieJar :: fromArray ($ values, $ domain) ' –

2

Простой пример. этот код сохраняет куки в файл и загрузить его в следующий раз, когда вы выполните скрипт

use GuzzleHttp\Client; 
use GuzzleHttp\Cookie\FileCookieJar; 

// file to store cookie data 
$cookieFile = 'cookie_jar.txt'; 

$cookieJar = new FileCookieJar($cookieFile, TRUE); 

$client = new Client([ 
    'base_uri' => 'http://example.com', 
    // specify the cookie jar 
    'cookies' => $cookieJar 
]); 

// guzzle/cookie.php, a page that returns cookies. 
$response = $client->request('GET', 'simple-page.php'); 

куки сессии не сохраняются автоматически. Чтобы сохранить файл cookie php , мы должны установить второй параметр в значение TRUE.

$cookieJar = new FileCookieJar($cookieFile, TRUE); 

Ссылка

http://www.ryanwright.me/cookbook/guzzle/cookie

+0

Вы действительно не читали мой вопрос. Часть «Мне нужно положить куки в Jar» означает, что мне нужно поместить в нее значения. см. мой ответ ниже. – DrDamnit

+0

сначала создайте файл. то просто измените токен –

+0

Не очень хорошее решение. Особенно, когда класс имеет конкретный метод для выполнения именно того, что я хотел (в ответе на мой собственный вопрос, выше). – DrDamnit

Смежные вопросы