簡體   English   中英

Ruby on Rails和Twitter OAuth的測試策略

[英]Testing strategies for Ruby on Rails & Twitter OAuth

我正在開發一個利用twitter oauth的應用程序,並試圖找出如何測試twitter oauth的磚牆。 特別是嘗試使用Cucumber和Webrat / Selenium來測試功能 - 如果用戶已經提供了對應用程序的oauth訪問權限,則注冊/登錄過程中的某些步驟會有不同的行為。

有沒有人在他們的Ruby on Rails Cucumber功能(或任何其他測試框架)中有任何成功模擬或存儲部分或所有Twitter OAuth系統的成功? 任何幫助,將不勝感激。

這是OP以來的一年多,但我最近發現這篇關於使用TwitterAuth和Cucumber的文章對我有用。

http://blog.zerosum.org/2009/7/13/twitter-auth-integration-testing

我在我的測試用例中使用了mocking。 我手動測試,弄清楚響應應該是什么,並覆蓋ruby oAuth gem。 以下是成功推文的一個測試用例(使用Shoulda):

 context 'cork/tweet' do
    setup do
      response = Net::HTTPResponse.new("1.1", 200, "")
      Net::HTTPResponse.any_instance.stubs(:body).returns JSON_RESPONSE
      OAuth::AccessToken.any_instance.stubs(:post).returns(response)
      post :create, :cork_id => @cork.id, :message=>MESSAGE     
    end
    should_respond_with :redirect
    should_change('Tweet.count' , :by => 1) {Tweet.count}
    .. and so on

JSON_RESPONSE是我從手動測試中收集到的答案 - 我將一個printf放在lib / oauth / tokens / access_token.rb中:44:在`post'中捕獲響應。

否則,這幾乎是不可能測試的,如你所指出的那樣,b / c,Twitter無法從API取消對您的應用程序的授權,如果您已經授權該應用程序,則行為也不同。

我沒有確切的twitter方法(直到現在還沒有這么做),但考慮到OAuth有一個描述不同可能流程的規范,我會嘗試為手頭的情況枚舉每個,並嘗試自動化相互作用。

為了指導您,以下是相關信息的一些指示:

通常,基於Web的流程是不同的(如您所見)用戶是否未授予客戶端應用程序的權限:

  • 如果用戶尚未授權客戶端應用程序,則將其重定向到服務提供商站點
    • 在服務提供商處,用戶尚未登錄,需要使用其憑據進行身份驗證
    • 一旦在服務提供商處進行了身份驗證,就需要授權或拒絕對客戶端應用程序/服務的授權
    • 一旦他給出了授權響應,它就會被發送回客戶端站點,然后客戶端站點就可以獲得訪問令牌
  • 如果用戶已經授權客戶端應用程序/服務,那么它可以使用訪問令牌繞過這些步驟並訪問服務提供商處的用戶數據/ API

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM