Проверка интеграции Authlogic before_filter: require_admin_user Проблема - PullRequest
0 голосов
/ 28 октября 2009

В моем интеграционном тесте я не могу получить доступ к URL-адресам, для которых требуется администратор, несмотря на создание сеанса администратора. Мой тест не пройден с ошибкой 302.

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 

Мой файл фиксаций называется role_users.yml, как и следовало ожидать - поэтому не знаете, как решить эту проблему ...

Ответы [ 3 ]

0 голосов
/ 28 октября 2009

Вам также может понадобиться включить Authlogic :: TestCase в ваш класс. Из моего приложения (rspec, но та же идея)

describe InvitationsController do
  include Authlogic::TestCase
  setup :activate_authlogic

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

Требует ли ваше приложение активацию пользователей? Если да, то этот пользователь?

Если это не поможет. возможно, вставьте какой-нибудь отладочный вывод, возможно, проверьте созданного пользователя.

0 голосов
/ 04 ноября 2009

У меня также была проблема с Authlogic в интеграционных тестах, и следующее исправление (из этого поста ) стало для меня удачным решением проблемы.

Заменить:

assert UserSession.create(users(:admin))

С:

post 'user_session', :user_session => {:email => 'someone@example.com', :password => 'password'}
0 голосов
/ 28 октября 2009

Я думаю, что новое действие перенаправляет на экран входа в систему.

Это происходит потому, что вы не вошли в систему. Попробуйте:

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

или каков на самом деле идентификатор пользователя.

Первый хеш - это хэш запроса, второй - хэш сессии.

...