Проверка перенаправления аутентификации с использованием Devise и RSpec

У меня есть образец приложения Rails, над которым я работаю, чтобы начать знакомство с BDD.

Прямо сейчас я использую Devise для проверки подлинности пользователя.

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

У меня есть следующий код:

запросы/задачи_spec.rb

describe "Tasks" do

  it "redirects to sign in for new task if no user logged in" do
    visit new_task_path
    response.should redirect_to(new_user_session_path)
  end

end

Теперь, когда я запускаю этот тест, я ожидаю, что он потерпит неудачу, потому что я не добавил никакой логики before_filter в TasksController. Я запускаю тест, и он терпит неудачу.

Теперь я добавляю помощника authenticate_user!, предоставленного Devise.

tasks_controller.rb

class TasksController < ApplicationController
  before_filter :authenticate_user!, only: [:new, :edit, :create, :destroy]
  ...
end

Тесты запускаются и все еще терпят неудачу, говоря следующее:

  1) TasksController redirects to sign in for new task if no user logged in
     Failure/Error: response.should redirect_to(new_user_session_path)
       Expected response to be a <:redirect>, but was <200>

Теперь при вызове посещения, поскольку в сеансе не было установлено ни одного пользователя, я ожидаю, что ответ будет перенаправлен на /user/sign_in. Тем не менее, я просто получаю обратно 200OK.

Что мне здесь не хватает? Как мне пройти этот тест?


person Lester Peabody    schedule 06.11.2012    source источник


Ответы (1)


Попробуй это:

describe "redirects to sign in for new task if no user logged in" do
  before { post tasks_path }
  specify { response.should redirect_to(new_user_session_path) }
end
person Thanh    schedule 07.11.2012