Si j'ai un modèle Devise User, dont seuls les utilisateurs ayant le rôle :admin sont autorisés à consulter une certaine url, comment puis-je écrire un test d'intégration RSpec pour vérifier que le statut renvoie 200 pour cette url ?
def login(user)
post user_session_path, :email => user.email, :password => 'password'
end
Cela a été pseudo-suggéré dans la réponse à cette question : Suppression de l'authentification dans les spécifications de la demande mais je n'arrive pas à le faire fonctionner avec devise. CanCan reçoit un nil User lors de la vérification de Ability, qui n'a pas les bonnes permissions, naturellement.
Il n'y a pas d'accès au contrôleur dans les spécifications d'intégration, donc je ne peux pas stub current_user, mais j'aimerais faire quelque chose comme ça.
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
NOTE ! !! : tout cela a changé depuis que la question a été posée. La meilleure façon actuelle de le faire est ici : http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara