Si tengo un usuario del modelo Devise, del cual solo aquellos usuarios con la función: admin pueden ver una determinada URL, ¿cómo puedo escribir una prueba de integración RSpec para verificar que el estado arroje 200 para esa url?¿Cómo hacer pruebas de integración con RSpec y Devise/CanCan?
def login(user)
post user_session_path, :email => user.email, :password => 'password'
end
Ésta era pseudo-se sugiere en la respuesta a esta pregunta: Stubbing authentication in request spec, pero no puedo por la vida de mí conseguir que funcione con el legado. CanCan recibe un usuario nulo cuando verifica la habilidad, que no tiene los permisos correctos, naturalmente.
No hay acceso al controlador en las especificaciones de integración, por lo que no puedo anotar el actual_user, pero me gustaría hacer algo como esto.
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
NOTA !!!: todo esto ha cambiado desde que se hizo la pregunta. La mejor manera actual de hacer esto es aquí: http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
Nota: todo esto ha cambiado desde que se hizo la pregunta. La mejor forma actual de hacerlo es aquí: http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara Solo para reiterar a los primeros lectores suspiro como yo –