module Admission::Tests

Attributes

all_privileges[RW]
order[RW]

Public Class Methods

assertion_failed_message(arbitration, privilege) click to toggle source
# File lib/admission/tests/tests.rb, line 7
def assertion_failed_message arbitration, privilege
  'Admission denied to %s applying %s.' % [
      arbitration.case_to_s,
      privilege.to_s
  ]
end
refutation_failed_message(arbitration, privilege) click to toggle source
# File lib/admission/tests/tests.rb, line 14
def refutation_failed_message arbitration, privilege
  'Admission given to %s applying %s.' % [
      arbitration.case_to_s,
      privilege.to_s
  ]
end
separate_privileges(selector=nil, inheritance: true, list: all_privileges, &block) click to toggle source
# File lib/admission/tests/tests.rb, line 21
def separate_privileges selector=nil, inheritance: true, list: all_privileges, &block
  selector = block unless selector
  selector = [selector] if selector.is_a? String

  block = case selector
  when Array
    if inheritance
      ref_privileges = selector.map do |s|
        order.get *Admission::Privilege.split_text_key(s)
      end
      ->(p){
        ref_privileges.any?{|ref_p| p.eql_or_inherits? ref_p }
      }

    else
      ->(p){ selector.include? p.text_key }

    end

  when Proc
    selector

  else raise ArgumentError.new('bad selector type')
  end

  list.partition &block
end