Я пытаюсь проверить способность CanCan в моем приложении, которое также использует Authlogic. Я проверил правильное поведение при работе с реальным сайтом, но я хочу написать функциональный тест, который предупредит меня, если это поведение прекратится в будущем. Мой файл способностей прост и выглядит следующим образом:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :read, User
can :manage, User, :id => user.id
cannot :create, User
can :destroy, UserSession
if user.role? :guest
can :create, UserSession
cannot :destroy UserSession
end
end
end
Мой тест для UserSessionsController также прост и выглядит следующим образом:
test "should redirect new for member" do
default_user = login :default_user
assert default_user.role? :member
assert_raise(CanCan::AccessDenied) { get :new }
assert_redirected_to root_path
end
Просто для справки, мой test_helper.rb выглядит так:
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'authlogic/test_case'
class ActiveSupport::TestCase
fixtures :all
setup :activate_authlogic
def login(user_login)
UserSession.create users(user_login)
users(user_login)
end
end
Когда я запускаю свой код, мой тест не проходит, однако:
test_should_redirect_new_for_member FAIL
CanCan::AccessDenied expected but nothing was raised.
Assertion at test/functional/user_sessions_controller_test.rb:13:in `block in <class:UserSessionsControllerTest>'
Если я закомментирую assert_raise, утверждение перенаправления также не будет выполнено. Кто-нибудь видит что-то не так с моим кодом, что приводит к сбою этого теста?