Я пытаюсь написать простой интеграционный тест в приложении на Rails 3.1, которое использует Authlogic и ActiveRecord SessionStore, но у меня все в порядке.
Сначала я попробовал классический подход: убедившись, что *Строка 1003 * уже есть в нашей test_helper.rb
Затем я написал метод установки, который вызывает activate_authlogic
, а затем использует UserSession(@user)
для создания сеанса.
Это создало сеанс (что доказано UserSession.find
), но при выполнении запроса get
на защищенном ресурсе ответом будет перенаправление на форму входа и сеанс будет прерван (т.е. UserSession.find
вернет nil
)
Я попытался POST-используя электронную почту / пароль, но, похоже, это будет работать только , если я верну хранилище сеансов обратно на cookie_store (что я узнал из этого комментария ).
Переключение хранилища сессий на CookieStore
только для тестирования будет возможным, но есть некоторые тесты, которые уже зависят от хранилища ActiveRecord.
Есть ли способ переключить хранилище сессий только для одного теста?Есть ли другое решение этой проблемы, которое я пропускаю?
require 'test_helper'
class ProtectedTest < ActionController::IntegrationTest
def setup
activate_authlogic
@user = Factory(:user, :roles => 'user')
UserSession.create(@user)
end
def test_protected
https!
get '/protected'
assert_response :success
end
end