class DeclarativeAuthorization::Test::Helpers::PrivilegeTestGenerator
Public Class Methods
new(test_class, role, privileges)
click to toggle source
# File lib/declarative_authorization/test/helpers.rb, line 19 def initialize(test_class, role, privileges) @test_class = test_class @role = role @privileges = [privileges].flatten end
Public Instance Methods
allowed(options)
click to toggle source
# File lib/declarative_authorization/test/helpers.rb, line 25 def allowed(options) role, privileges, actions, params_name = extract_options(options) actions.each do |action| privileges.each do |privilege| @test_class.send(:define_method, "test_#{action}__access_allowed__#{role}_role__#{privilege ? "#{privilege}_permissions__" : ""}with_#{params_name || 'no_params'}") do priv_param = (privilege == :hidden ? nil : privilege) if forbidden_with_role_and_privilege?(action, role, priv_param, params_name, options) flunk "The '#{action}' action #{params_name ? "with '#{params_name}' parameters " : ''}should be accessible for users with #{privilege ? "'#{privilege}' permissions for " : ""}the '#{role}' role." end end end end end
denied(options)
click to toggle source
# File lib/declarative_authorization/test/helpers.rb, line 40 def denied(options) role, privileges, actions, params_name = extract_options(options) actions.each do |action| privileges.each do |privilege| @test_class.send(:define_method, "test_#{action}__access_denied__#{role}_role__#{privilege ? "#{privilege}_permissions__" : ""}with_#{params_name || 'no_params'}") do priv_param = (privilege == :hidden ? nil : privilege) unless forbidden_with_role_and_privilege?(action, role, priv_param, params_name, options) flunk "The '#{action}' action #{params_name ? "with '#{params_name}' parameters " : ''}should NOT be accessible for users with #{privilege ? "'#{privilege}' permissions for " : ""}the '#{role}' role." end end end end end
Protected Instance Methods
extract_options(options)
click to toggle source
# File lib/declarative_authorization/test/helpers.rb, line 57 def extract_options(options) # Can't use these instance variable from inside a method on the test class role = @role privileges = @privileges actions = options[:to] raise ':to is a required option!' unless actions actions = [actions] unless actions.is_a?(Array) params_name = options[:with] [role, privileges, actions, params_name] end