Module: Admission::Tests

Defined in:
lib/admission/tests/tests.rb

Defined Under Namespace

Classes: ContextSpecificPrivilege, Evaluation, RuleCheckContext

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.all_privilegesObject

Returns the value of attribute all_privileges.



5
6
7
# File 'lib/admission/tests/tests.rb', line 5

def all_privileges
  @all_privileges
end

.orderObject

Returns the value of attribute order.



4
5
6
# File 'lib/admission/tests/tests.rb', line 4

def order
  @order
end

Class Method Details

.assertion_failed_message(arbitration, privilege) ⇒ Object



7
8
9
10
11
12
# 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) ⇒ Object



14
15
16
17
18
19
# 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) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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