2009-10-28 61 views
0

尽管创建管理用户会话,但我无法访问需要管理员用户的集成测试中的网址。我的测试在302错误上失败。集成测试Authlogic before_filter:require_admin_user问题

class NewsItemsController < ApplicationController 
    before_filter :require_admin_user, :except => [:show, :index, :feed] 

    etc... 

end 

--test/inetgration/admin_stories.rb -- 

require 'test_helper' 

class AdminStoriesTest < ActionController::IntegrationTest 

    fixtures :all 
    setup :activate_authlogic 

    # if user is an admin he can create a new news_item 
    def test_creating_a_news_item 
     assert UserSession.create(users(:admin)) 
     get "news_items/new" 
     assert_response :success 
     #etc... 
    end 
end 

我得在test.log中的以下内容:

Unable to load roles_user, underlying cause no such file to load -- roles_user 

我的灯具文件名为roles_users.yml你所期望的 - 所以不知道应该如何解决这个...

+0

你有roles_user模式? – 2009-10-28 16:00:15

+0

不,我有角色和用户之间的habtm关联 – Carmen 2009-10-28 16:28:13

回答

0

我认为新的操作重定向到登录屏幕。

这是因为你还没有登录尝试:

get "news_items/new", {}, { 'user_id' => 0 } 

或什么的用户ID实际上是。

第一个散列是请求散列,第二个散列是会话散列。

+0

得到“news_items/new”,{},{'user_id'=>'1'} 没有帮助 - 仍然得到302错误 – Carmen 2009-10-28 15:16:47

+0

事实上,这是为restful_authentication – 2009-10-28 15:59:33

0

您可能还需要在您的课堂中包含Authlogic :: TestCase。从我的应用程序(rspec,但相同的想法)

describe InvitationsController do 
    include Authlogic::TestCase 
    setup :activate_authlogic 

    describe 'sending invitations' do 
    ......... 

您的应用程序是否需要激活用户?如果是这样,这个用户?

如果这没有帮助。也许粘贴一些调试输出,也许检查创建的用户。

+0

我已将test.log错误添加为编辑 – Carmen 2009-10-28 15:43:35

0

我在集成测试中也遇到Authlogic问题,下面的修复(从this post)对我来说是一个成功的解决方法。

替换:

assert UserSession.create(users(:admin)) 

有了:

post 'user_session', :user_session => {:email => '[email protected]', :password => 'password'}