我正在使用 rspec、cucumber 和 capybara,我正在寻找一种方法来测试恶意用户无法破解表单然后发布到他/她没有权限的 URL。我在 cancan 中设置了权限,这样“应该”可以工作,但是,我可以测试它的唯一方法是自己破解一个表单。
我怎样才能自动化这种测试?有了 webrat,我可以在 rspec 的单元测试中做到这一点,比如
put :update, :user_id => @user.id, :id => @user_achievement.id
response.should contain("Error, you don't have permission to access that!")
然而,对于水豚来说,似乎只有访问才能得到。我找不到办法做到这一点,我已经到处搜索了。
任何帮助将非常感激,
谢谢
我认为你可以通过机架测试来做到这一点https://github.com/brynary/rack-test
在你的 Gemfile 中:
gem 'rack-test'
在你的 env.rb 文件中
module CapybaraApp
def app; Capybara.app; end
end
World(CapybaraApp)
World(Rack::Test::Methods)
步骤定义某处:
When /^I send a POST request to "([^"]*)"$/ do |path|
post path
end
我学到的大部分内容都来自这里:http://www.anthonyeden.com/2010/11/testing-rest-apis-with-cucumber-and-rack-test
更新:我认为您可以使用较新版本的 Rails 和/或 Cucumber 跳过对 env.rb 文件的更改(不确定是哪一个,我只是不在我的新项目中执行该部分,并且工作正常)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)