Это проблема со сбором файлов cookie в спецификации контроллера в следующих условиях:
- rails 3.1.0.rc4
- rspec 2.6.0
- rspec-rails 2.6.1
У меня есть простая спецификация контроллера, которая создает пользователя Factory, вызывает метод входа, который устанавливает cookie, а затем проверяет, может ли вошедший в систему пользователь получить доступстраница.Проблема заключается в том, что все куки-файлы исчезают между установленным куки-файлом аутентификации и действием «show», вызываемым на моем контроллере.
Мой код работает нормально при запуске в браузере на сервере rails dev.Еще более странное поведение при запуске спецификации заключается в том, что все, что установлено, несмотря на то, что cookie-хэш исчезает, но все, что установлено в сеансовом хеше, сохраняется.Я просто что-то упускаю из-за того, как файлы cookie работают при использовании rspec?
Код спецификации
it "should be successful" do
@user = Factory(:user)
test_sign_in @user
get :show, :id => @user
response.should be_success
end
Код входа
def sign_in(user, opts = {})
if opts[:remember] == true
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
session[:foo] = "bar"
cookies["blah"] = "asdf"
self.current_user = user
#there are two items in the cookies collection and one in the session now
end
Проверка подлинности на запросе get: showздесь происходит сбой, потому что куки [: auth_token] равен nil
def current_user
#cookies collection is now empty but session collection still contains :foo = "bar"... why?
@current_user ||= User.find_by_auth_token(cookies[:auth_token]) if cookies[:auth_token]
end
Это ошибка?Это какое-то намеренное поведение, которое я не понимаю?Я просто смотрю сквозь что-то очевидное?