我需要整合的服務器返回編碼爲JWT的答案。更糟的是,響應體實際上是一個JSON,形式爲:驗證協議之前的編碼/加密機構
{d: token} with token = JWT.encode({id: 123, field: "John", etc.})
我想使用一個協議驗證的解碼令牌的內容。我知道我可以很容易地通過一個協議來驗證我返回了一個{d:string},我無法對字符串進行精確匹配(因爲JWT包含一些不同的ID)。我想要的是以下內容,它假設增加了一個新的Pact.JWT功能。
my_provider. upon_receiving('my request') .with(method: :post, path: '/order', headers: {'Content-Type' => 'application/json'} ).will_respond_with( status: 200, headers: {'Content-Type' => 'application/json; charset=utf-8'}, body: { d: Pact::JWT({ id: Pact.like(123), field: Pact.term(generate: "John", matcher: /J.*/ },signing_key,algo ) })
短加入這個條約::智威湯遜的,是有辦法實現這一目標樣的結果?
我已經在使用該協議代理來運行我的驗證。我知道你可以在發送驗證之前修改請求(How do I verify pacts against an API that requires an auth token?)。您可以在從代理服務器收到請求後修改請求嗎?
如果是這樣的話,我可以計劃以下解決方法:
- 在我實際的代碼,有時期望在JWT
- 解碼,而不是答案,一旦與運行我的測試開關(正常代碼行爲,嘲笑返回JWT數據編碼。
- 運行我的測試第二次與開關關閉(代碼期望數據已經解碼,
- 掛鉤到代理中:驗證任務以即時解碼JWT,並使用現有的契約機制進行驗證。 (我不知道該怎麼做的步驟)。
我的代碼是紅寶石。我無法訪問提供者。
任何建議表示讚賞!謝謝
的Pact.service_provider進入者代碼(如果有的話),並且需要一個要求,該應用在配置/申請中,當您有模塊MyAppName類申請所定義的「協議/提供商」 對於軌, 你會想要我的應用程序::應用程序 這回答它,雖然我沒有使用它,相反,我已經派pact-support來添加對Pact.Jwt對象的支持。 –