gpt4 book ai didi

ruby-on-rails - 如何最好地编写 RSpec 自定义匹配器来测试 Rails 应用程序中的访问控制

转载 作者:行者123 更新时间:2023-11-28 20:10:10 24 4
gpt4 key购买 nike

好吧,与其编写一大堆访问控制规范,并在我的许多规范文件中复制它们,不如创建一个自定义匹配器。所以不是这个:

describe "access control" do
it "should prevent access by non-logged-in users"
it "should prevent access by normal users"
it "should prevent access by editor users"
it "should prevent access by admin users"
it "should allow access by super admin users"
end

我想做这样的事情:

lambda do
get :index
end.should have_access_control(:allowed => [:super_admin], :disallowed => [:admin, :editor, :user])

是否有任何示例或建议说明我可以如何着手做这样的事情?

最佳答案

好的,I have found a method of achieving this ,尽管它不使用自定义匹配器。在您的 spec_helper.rb 中包含以下代码:

def access_control (code, options={})
options = {:allow => [], :disallow => []}.merge(options)

options[:allow].each do |user|
it "#{code} should allow #{user.to_s}" do
login_as(user)
eval code
response.should_not redirect_to(login_path)
end
end

options[:disallow].each do |user|
it "#{code} should disallow #{user.to_s}" do
login_as(user)
eval code
response.should redirect_to(login_path)
end
end
end

并如下调用:

access_control("get :index", {:allow => [:super_admin], :disallow => [:quentin, :admin]})

然后您可以使用它来构建一个完整的应该限制的方法列表,以及它们被限制到的用户。

关于ruby-on-rails - 如何最好地编写 RSpec 自定义匹配器来测试 Rails 应用程序中的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com