XMLとJSON REST APIをBehatでテストしています。認証にはSentinelを使用します。さて、私がBehatを通してユーザーにログインし、ログインセッションの状態をテストすると、APIは否定的な応答(たとえば、ログインしていないユーザー)を返します。 AJAXリクエストを使ってブラウザで手動で同じことを手動で行うと、すべて正常に動作します。最終結果は問題ありませんが、シナリオは失敗します。どのようにこの問題を克服するための任意の提案?Behatとのログインセッションのテスト
UPDATE:
私はSlim、Twig、EloquentとSentinelに基づいており、アプリケーションのセットアップにもう少し詳しく説明します。
APIには、ユーザーセッションを作成、表示(yesまたはno)、削除するためのいくつかのルートがあります。ユーザーにログインするには、メールアドレスとパスワードを/session.json
または/session.xml
に投稿します。コントローラの背後では基本的にSentinel::authenticate(...)
と呼ばれます。
これはすべてブラウザで正常に動作します。 /session.json
へのGETリクエストを実行すると、ユーザーが正しくログインしていることがわかります。私がBehatと同じ手順を実行すると、POSTリクエストで正しい戻り値が得られるので、Sentinelはユーザーがログインしていると言いますが、GETリクエストはユーザーがログインしていないことを通知します。
私は実際にリクエストを実行するためにRequestsライブラリを使用する状況では
Scenario Outline: Logging in a user
Given I have a user with "<email>" and "<password>"
And I use the "<format>" format
When I log in the user with "<email>" and "<password>"
Then the "success" message should be "session.active"
Examples:
| email | password | format |
| [email protected] | 32165487 | xml |
| [email protected] | 89056734 | json |
:あなたのアイデア、Behatシナリオは次のようになります。したがって、Behatは通常のクライアントとして機能します。
可能であれば、どのように認証を行ったのか、使用しているエラーと使用している検証に関するコードを追加してください。他の人があなたに特定の答えを与えるのに役立つ可能性があります。質問の実際の形式はあまり具体的ではありません。 – lauda
セットアップに関するもう少し詳しい情報を追加しました。それは、ストリップされたダウンバージョンですが、それは基本的にそれが何をしているのです。 – wout