2009-06-12 59 views
8

我正在開發一個應用程序,它利用twitter oauth並跑入一堵磚牆,試圖弄清楚如何測試twitter oauth。特別是試圖使用Cucumber和Webrat/Selenium來測試功能 - 如果用戶已經嚮應用程序授予了oauth訪問權限,註冊/登錄過程中的某些步驟的行爲將有所不同,等等。Ruby on Rails和Twitter的測試策略OAuth

有沒有人在他們的Ruby on Rails Cucumber功能(或任何其他測試框架)上嘲諷或存儲部分或全部Tw​​itter OAuth系統?任何幫助,將不勝感激。

回答

3

我沒有twitter的精確配方(直到現在還沒有完成),但考慮到OAuth有一個描述不同可能流程的規範,我會盡量列舉它們中的每一個,嘗試自動化交互。

要指導你,這裏有幾個指針相關信息:

通常根據對網絡流量的不同(如你所見)是否是我們呃沒有給授權客戶端應用程序:

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

我曾經在我的測試案例嘲諷。我手動測試,找出了答案應該是什麼,並且覆蓋了ruby oAuth寶石。這裏是一個測試案例(使用早該)一個成功的鳴叫:

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的/標記/ access_token.rb:44:在`post'來捕獲響應。

否則這幾乎是不可能的測試,B/C正如你指出,微博也沒辦法,先取消從API應用程序,其作用不同,如果您已授權應用程序。