| Module | Authorization::TestHelper |
| In: |
lib/declarative_authorization/maintenance.rb
|
TestHelper provides assert methods and controller request methods which take authorization into account and set the current user to a specific one.
Defines get_with, post_with, get_by_xhr_with etc. for methods get, post, put, delete each with the signature
get_with(user, action, params = {}, session = {}, flash = {})
Use it by including it in your TestHelper:
require File.expand_path(File.dirname(__FILE__) +
"/../vendor/plugins/declarative_authorization/lib/maintenance")
class Test::Unit::TestCase
include Authorization::TestHelper
...
def admin
# create admin user
end
end
class SomeControllerTest < ActionController::TestCase
def test_should_get_index
...
get_with admin, :index, :param_1 => "param value"
...
end
end
# File lib/declarative_authorization/maintenance.rb, line 168
168: def self.included (base)
169: [:get, :post, :put, :delete].each do |method|
170: base.class_eval "def \#{method}_with (user, *args)\nrequest_with(user, \#{method.inspect}, false, *args)\nend\n\ndef \#{method}_by_xhr_with (user, *args)\nrequest_with(user, \#{method.inspect}, true, *args)\nend\n", __FILE__, __LINE__
171: end
172: end
Analogue to the Ruby‘s assert_raise method, only executing the block in the context of the given user.
# File lib/declarative_authorization/maintenance.rb, line 136
136: def assert_raise_with_user (user, *args, &block)
137: assert_raise(*args) do
138: with_user(user, &block)
139: end
140: end
# File lib/declarative_authorization/maintenance.rb, line 156
156: def request_with (user, method, xhr, action, params = {},
157: session = {}, flash = {})
158: session = session.merge({:user => user, :user_id => user.id})
159: with_user(user) do
160: if xhr
161: xhr method, action, params, session, flash
162: else
163: send method, action, params, session, flash
164: end
165: end
166: end
# File lib/declarative_authorization/maintenance.rb, line 142
142: def should_be_allowed_to (privilege, object_or_context)
143: options = {}
144: options[object_or_context.is_a?(Symbol) ? :context : :object] = object_or_context
145: assert_nothing_raised do
146: Authorization::Engine.instance.permit!(privilege, options)
147: end
148: end
# File lib/declarative_authorization/maintenance.rb, line 150
150: def should_not_be_allowed_to (privilege, object_or_context)
151: options = {}
152: options[object_or_context.is_a?(Symbol) ? :context : :object] = object_or_context
153: assert !Authorization::Engine.instance.permit?(privilege, options)
154: end