ENV["RAILS_ENV"] = "test" require File.expand_path(File.dirname(__FILE__) + "/../../../../config/environment") require 'test/unit' require 'mocha' # from Rails require 'rails/test_help' # load the database schema for the tests ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log") load(File.dirname(__FILE__) + '/schema.rb') # change the table names for the tests to not touch Role.set_table_name 'access_control_test_roles' RoleAssignment.set_table_name 'access_control_test_role_assignments' # accessor example class to access some resources class AccessControlTestAccessor < ActiveRecord::Base set_table_name 'access_control_test_accessors' acts_as_accessor attr_accessible :name def cache_keys(arg) [] end def blocks_to_expire_cache [] end end # resource example class to be accessed by some accessor class AccessControlTestResource < ActiveRecord::Base set_table_name 'access_control_test_resources' acts_as_accessible PERMISSIONS[self.class.name] = {'bla' => N_('Bla')} attr_accessible :name end # controller to test protection class AccessControlTestController < ApplicationController include PermissionCheck protect 'see_index', 'global', :user, :only => :index protect 'do_some_stuff', :resource, :user, :only => :other_stuff protect ['permission1', 'permission2'], :resource, :user, :only => :stuff_with_multiple_permission def index render :text => 'test controller' end def other_stuff render :text => 'test stuff' end def stuff_with_multiple_permission render :text => 'multiple permission' end protected def user AccessControlTestAccessor.find(params[:user]) if params[:user] end def resource AccessControlTestResource.find(params[:resource]) if params[:resource] end end