2017-02-05 62 views
2

私はPHPで認証が必要なサイトのためのユニットテストを行っています。認証はクッキーベースですので、私は、クッキージャーに、このようなクッキーを置くことができるようにする必要があります:Guzzle CookieJarのクッキーを設定する

[ 'user_token' => '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' ] 

Webアプリケーションその後、試験データのために、この既知の良好なトークンを使用することができ、かつ認証することができるようになりますデータフィクスチャと対話するためのテスト条件の下で実行されます。

また、安全なクッキーでなければならず、私は(明らかに)ドメインを設定する必要があります。

問題:このクッキーを作成して設定する方法はわかりません。あなたはどうやってそれをしますか?

+0

あなたはファイルにjarファイルを格納して再利用することを考えていますか? –

+0

おそらく。単体テストが進行するので、同じ認証トークンを複数の要求に使用することができます。 – DrDamnit

+0

文法とスペルの修正はほとんどありません。 – Tom

答えて

4

The source code私は必要な答えを提供します。

CookieJarクラスは、連想配列からクッキーを構築するためのメソッドを提供します。例:

$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'); 

セッションクッキーは自動的に保存されません。 PHP セッションクッキーを保存するには、2番目のパラメータをTRUEに設定する必要があります。

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

リファレンス

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

+0

あなたは実際に私の質問を読んでいませんでした。 「私は瓶にクッキーを入れる必要がある」という部分は、私が値を入れなければならないことを意味します。下の私の答えを参照してください。 – DrDamnit

+0

最初にファイルを作成させます。トークンを変更するだけです。 –

+0

良い解決策ではありません。特にクラスに、私が望むものを正確に行うための具体的な方法があるとき(上記の自分の質問に対する答えで)。 – DrDamnit

関連する問題