2015-04-24 67 views
5

我想測試我的應用程序處理來自條帶的webhook事件,當訂閱付款已經(或失敗)。以下是我試過到目前爲止:如何測試條紋中的訂閱續訂流程?

  • 建立一個新的訂閱
  • 更新用戶的信用卡是可以添加到一個帳戶的一個,但不能實際收費
  • 改變試驗結束日期是在一秒鐘
  • 等待幾秒鐘,期望網絡掛接要發送

然而,根據the documentation

如果您已配置webhooks,發票將等到最後一個webhook發送成功後一小時(或最後webhook在發生故障後超時)。

因爲我正在嘗試將這作爲自動化集成測試套件的一部分,所以需要等待很長時間。

一個建議(來自IRC)是僞裝webhook請求,以便我的集成測試發送事件,而不是發送給Stripe。但是,由於Stripe在webhook中不包含任何類型的HMAC,我不能相信有效載荷中的數據。所以,我的應用程序只需要從網絡掛接有效載荷的事件ID並獲取event from the Stripe API

如果擔心安全問題,或者如果它確認條紋發送網絡掛接是很重要的,你應該只使用ID在發您的webhook,並應直接從API請求剩餘的詳細信息。

如果我試圖爲我的測試(按設計)注入假事件,這顯然不起作用。

測試此類場景的最佳做法是什麼?

+1

我會說在你測試這個流程時不能驗證事件嗎?我自己做的是在Live模式下從API中檢索事件,但在測試模式下,我只是「信任」有效載荷,因爲我是發送它的人(並且它是測試模式)。 – koopajah

+0

@koopajah謝謝,我想這是要走的路。如果您想將其作爲答案發布,我會將其標記爲「已接受」。 – pkaeding

+0

不知道這是一個非常好的答案!很高興你能回答你自己的問題嗎? :) – koopajah

回答

1

看來沒有一個完美的方法來做到這一點。正如@koopajah在comment中所建議的那樣,我在應用程序中添加了一個配置值,它將禁用從Stripe中獲取事件,而只是信任webhook中的事件數據。這使我能夠以與生產工作幾乎相同的方式測試我的流程,因爲webhook中的事件數據和從Stripe中獲取的事件是相同的(假設它是真實的webhook請求:)

除非/直到Stripe在webhook請求中包含一個HMAC簽名來驗證它來自它們,我認爲這是解決問題的最好方法。