我正在开发一个利用twitter oauth的应用程序,并试图弄清楚如何测试twitter oauth。特别是尝试使用Cucumber和Webrat / Selenium来测试功能 - 如果用户已经提供了对应用程序的oauth访问权限,那么注册/登录过程中的某些步骤会有不同的行为。
有没有人在他们的Ruby on Rails Cucumber功能(或任何其他测试框架)中嘲笑或抄袭部分或所有Twitter OAuth系统是否成功?任何帮助将不胜感激。
答案 0 :(得分:4)
自OP以来已经过去了一年多,但我最近发现这篇关于使用TwitterAuth和Cucumber的文章对我有用。
http://blog.zerosum.org/2009/7/13/twitter-auth-integration-testing
答案 1 :(得分:3)
我没有精确的推文配方(直到现在还没有这么做),但考虑到OAuth有一个描述不同可能流程的规范,我会尝试为手头的情况枚举每一个,并尝试自动化交互。
为了指导您,以下是相关信息的几点建议:
通常,基于Web的流程是不同的(如您所见)用户是否未授权客户端应用程序:
答案 2 :(得分:3)
我在我的测试用例中使用了模拟。我手动测试,弄清楚响应应该是什么,并覆盖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是我从手动测试中收集的答案 - 我在lib / oauth / tokens / access_token.rb中设置了printf:44:在'post'中捕获响应。
否则这几乎是不可能测试的,b / c正如你所指出的那样,Twitter无法从API中取消对你的应用程序的授权,如果你已经授权了应用程序,那么行为也会有所不同。