Sha256: 806bc30d117caf1cca54699e99a9a4dec0c29a1a31e6500e095172c9ebc34bf1

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

require File.join(File.dirname(__FILE__), 'spec_helper')
require File.join(File.dirname(__FILE__), '..', 'lib', 'acl9')

module SomeHelper
  include Acl9Helpers

  access_control :the_question do
    allow :hamlet, :to => :be
    allow :hamlet, :except => :be
  end
end

describe SomeHelper do
  module Hamlet
    def current_user
      user = Object.new

      class <<user
        def has_role?(role, obj=nil)
          role == 'hamlet'
        end
      end

      user
    end
  end

  module NotLoggedIn
    def current_user; nil end
  end
  
  module Noone
    def current_user
      user = Object.new

      class <<user
        def has_role?(*_); false end
      end

      user
    end
  end

  class Base
    include SomeHelper

    attr_accessor :action_name
    def controller
      self
    end
  end

  class Klass1 < Base
    include Hamlet
  end
  
  class Klass2 < Base
    include NotLoggedIn
  end
  
  class Klass3 < Base
    include Noone
  end

  it "has :the_question method" do
    Base.new.should respond_to(:the_question)
  end
  
  it "role :hamlet is allowed to be" do
    k = Klass1.new
    k.action_name = 'be'
    k.the_question.should be_true
  end
  
  it "role :hamlet is allowed to not_be" do
    k = Klass1.new
    k.action_name = 'not_be'
    k.the_question.should be_true
  end
  
  it "not logged in is not allowed to be" do
    k = Klass2.new
    k.action_name = 'be'
    k.the_question.should == false
  end
  
  it "noone is not allowed to be" do
    k = Klass3.new
    k.action_name = 'be'
    k.the_question.should == false
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
be9-acl9-0.9.3 spec/helpers_spec.rb
be9-acl9-0.9.4 spec/helpers_spec.rb