2017-04-04 91 views
0

我可以通過Guzzle通過外部API從Laravel連接。該api需要通過具有授權碼的oAuth2進行身份驗證。我想知道如何集成測試重定向方案,只有用戶名和密碼?單元測試oAuth2授權碼

換句話說:如何模擬瀏覽器動作,並重定向到在集成測試中從重定向的uri中「抓取」授權碼?

流量

  • 我請求(GET)
  • 我必須在用戶名和密碼,
  • 填寫正確登錄後,我會被重定向到指定的外部API的登錄頁面重定向URL以德授權碼的查詢參數

自動測試

  • 我可以連接到api,我可以做GET,POST和PUT請求
  • 重定向方案通過瀏覽器工作,但在集成測試場景中,我只有用戶名和密碼但不能字段CSRF,VIEWSTATE等

問題

在第一GET請求的響應(獲取登錄表單)有多個隱藏字段(CSRF,視圖狀態)。我無法在我的POST請求中模擬這些字段。我只有用戶名和密碼字段。所以在這種情況下,我從來沒有被重定向,但它會再次返回登錄頁面。因爲我錯過了關鍵的隱藏領域。

+0

你想實現什麼?單元測試相關邏輯,還是使用僞造/模擬oauth服務器創建集成測試? – k0pernikus

+0

我想從重定向uri獲得授權碼。僞造或模擬的auth服務器有什麼用處? – schellingerht

+0

這取決於你的用例。你真的想在你的測試中調用一個外部api,它的成功將會與外部API相關嗎?讀你的問題,我很難確定你想要達到的目標。 – k0pernikus

回答

0

我需要做到以下幾點:

一旦

  • 請求授權碼
  • 請求訪問令牌+刷新令牌

如果刷新令牌可

使用當前r請求一個新的令牌對(訪問+刷新)當訪問令牌過期時刷新令牌。