2017-04-18 51 views
0

我正在使用Behat測試XML和JSON REST API。對於身份驗證,我使用Sentinel。現在,如果我通過Behat登錄用戶,並且測試登錄會話的狀態,則API返回否定響應(例如,用戶未登錄)。當我使用AJAX請求在瀏覽器中手動完成同樣的事情時,一切正常。所以最終結果是好的,但情況失敗。有關如何解決此問題的任何建議?使用Behat測試登錄會話

UPDATE:

我會更詳細一點的應用程序,這是基於SlimTwigEloquentSentinel的設置。

API有一些創建,顯示(是或否)和刪除用戶會話的路由。因此,通過將電子郵件地址和密碼發送到/session.json/session.xml來完成登錄用戶。在幕後,控制器基本上會撥打Sentinel::authenticate(...)

這一切都在瀏覽器中正常工作。如果我執行/session.json的GET請求,我將看到用戶正確登錄。如果我遵循與Behat相同的步驟,我將在POST請求中獲得正確的返回值,所以Sentinel說用戶已登錄。但GET請求會告訴我用戶未登錄。

給你一個想法,在貝哈特場景看起來是這樣的:

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 | 

在上下文我使用Requests庫實際執行的請求。所以Behat是一個常客。

+0

如果可能,請添加一些關於您如何進行身份驗證的代碼,以及您有哪些錯誤和您使用的驗證。可能有助於他人給你一個具體的答案,問題的實際格式不是很具體。 – lauda

+0

我在設置上添加了更多信息。這是一個精簡版,但基本上就是它的功能。 – wout

回答

0

您能否提供更多有關設置behat的信息? behat.yml和版本,擴展名?