class Object

Public Class Methods

create_action_mock(controller) click to toggle source
# File lib/admission/tests/minitest.rb, line 49
def self.create_action_mock controller
  ->(action, scope, params: nil, &block){
    c = controller.new
    c.stubs(:action_name).returns action
    c.expects(:request_admission!).
        with(action.to_sym, scope)
    c.stubs(:params).returns params if params
    block.call c if block
    c.send :assure_admission
  }
end
type_to_scope(type) click to toggle source

use active_support's inflection to get the scope of resource type

# File lib/admission/rails.rb, line 10
def self.type_to_scope type
  type.name.tableize.to_sym
end

Public Instance Methods

assert_admission(status, privilege, request, scope) click to toggle source
# File lib/admission/tests/minitest.rb, line 11
def assert_admission status, privilege, request, scope
  arbitration = status.instantiate_arbitration request, scope
  arbitration.prepare_sitting privilege.context
  result = arbitration.rule_per_privilege(privilege).eql?(true)

  assert result, ->{ Admission::Tests.assertion_failed_message arbitration, privilege }
end
assert_admissions_evaluation(evaluation, request, to_assert, to_refute) click to toggle source
# File lib/admission/tests/minitest.rb, line 31
def assert_admissions_evaluation evaluation, request, to_assert, to_refute
  should, should_not = evaluation.for_request(request).evaluate_groups to_assert, to_refute
  assert should.empty?, ->{
    Admission::Tests.assertion_failed_message evaluation.arbitration,
        "any of: #{should.map{|p| p.privilege.to_s}.join ', '}"
  }
  assert should_not.empty?, ->{
    Admission::Tests.refutation_failed_message evaluation.arbitration,
        "any of: #{should_not.map{|p| p.privilege.to_s}.join ', '}"
  }
end
get_privilege(name, context=nil) click to toggle source
# File lib/admission/tests/minitest.rb, line 5
def get_privilege name, context=nil
  p = Admission::Tests.order.get *Admission::Privilege.split_text_key(name)
  p = p.dup_with_context context if context
  p
end
refute_admission(status, privilege, request, scope) click to toggle source
# File lib/admission/tests/minitest.rb, line 19
def refute_admission status, privilege, request, scope
  arbitration = status.instantiate_arbitration request, scope
  arbitration.prepare_sitting privilege.context
  result = arbitration.rule_per_privilege(privilege).eql?(true)

  refute result, ->{ Admission::Tests.refutation_failed_message arbitration, privilege }
end
separate_privileges(*args, &block) click to toggle source
# File lib/admission/tests/minitest.rb, line 27
def separate_privileges *args, &block
  Admission::Tests.separate_privileges *args, &block
end