Если у меня есть пользователь модели Devise, из которого только пользователи с ролью: admin могут просматривать определенный URL-адрес, как я могу написать интеграционный тест RSpec, чтобы проверить, что статус возвращает 200 для этого URL?
def login(user)
post user_session_path, :email => user.email, :password => 'password'
end
Это было псевдо предложено в ответе на этот вопрос: Отключение аутентификации в спецификации запроса , но я могу » Я хоть убей заставлю его работать с devise. CanCan получает nil User при проверке способности, которая, естественно, не имеет необходимых разрешений.
В спецификациях интеграции нет доступа к контроллеру, поэтому я не могу заглушить 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