Если у меня есть пользователь модели Devise, из которых только пользователям с ролью: admin разрешено просматривать определенный URL-адрес, как я могу написать тест интеграции RSpec, чтобы проверить, что статус возвращает 200 для этого URL?
def login(user)
post user_session_path, :email => user.email, :password => 'password'
end
Это было предложено в ответе на этот вопрос: Устанавливать аутентификацию в спецификации запроса, но я не могу на всю жизнь заставить его работать с разработать. CanCan получает нулевого пользователя при проверке способности, которая не имеет правильных разрешений, естественно.
Нет доступа к контроллеру в спецификациях интеграции, поэтому я не могу закодировать current_user, но я хотел бы сделать что-то вроде этого.
describe "GET /users" do
it "should be able to get" do
clear_users_and_add_admin #does what it says...
login(admin)
get users_path
response.status.should be(200)
end
end
ПРИМЕЧАНИЕ!!!: все это изменилось с тех пор, как был задан вопрос. Самый лучший способ сделать это можно здесь: http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara